堆叠注入

admin 2024年2月9日00:57:35评论9 views字数 1146阅读3分49秒阅读模式
0x0
声明

    由于传播、利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,Cyb3rES3c及文章作者不承担任何责任。请遵守《中华人民共和国个人信息保护法》、《网络安全法》等相关法律法规。

0x1
原理

    在正常的SQL执行时,我们进行的操作很有限,比如我们执行查询语句时,我们只能进行查询,不能进行增删改操作,但是堆叠注入就不一样了,这种注入方式可以一次性输入并执行多条SQL语句,也就是可以同时进行增删改查操作,大大提高了工作效率,但是也增加了一定的漏洞风险。

    堆叠注入的利用条件很严苛,会受到API、数据库引擎以及权限的控制。只有当调用数据库函数支持执行多条SQL语句时才可以利用,例如mysqli_multi_query()函数就支持同时执行多条SQL语句,但是mysqli_query()函数一次就只能执行一条SQL语句。

0x2
sql-labs 38

输入单引号报错

堆叠注入

闭合单引号并注释后面的代码

堆叠注入

没有出现报错信息,这里可以使用 Less-1 的 payload,也可以使用堆叠注入添加用户

数据库中的用户信息

堆叠注入

添加一个用户 less38

?id=1';insert into users(id,username,password) values(15,'less38','less38')--+

堆叠注入

查看用户信息

堆叠注入

less38用户添加成功

漏洞成因:

堆叠注入

在执行sql语句时使用了 mysqli_multi_query() 函数,并且没有对用户输入的参数进行过滤

0x3
[强网杯 2019]随便注

输入1',查询

堆叠注入

报错了,存在单引号类型的注入

输入

1' order by 1--+1' order by 2--+

堆叠注入

输入 1' order by 3--+

堆叠注入

出现错误信息,说明有两个字段

判断回显位置

堆叠注入

发现与增删改查相关的关键字被过滤了,但是没有过滤与堆叠注入相关的关键字

查表 -1';show tables%23

堆叠注入

发现两张表,根据表名猜测 flag 在第一张表中

查表中的内容(注意:要将表名用``闭合来标识这是一个表名而不是一个普通的字符串)

堆叠注入

发现 flag,但是 select 被过滤了,不能直接读出 flag,还好在 MySQL 中还可以使用 handler 语句读取表中的数据

堆叠注入

构造 payload

-1';handler `1919810931114514` open;handler `1919810931114514` read first%23

堆叠注入

成功读到 flag

0x4
总结

    在实际开发中,执行SQL语句时还是尽量使用 mysqli_query() 函数,虽然mysqli_query() 函数的效率可能没有 mysqli_multi_query() 函数的执行效率高,但是这降低了网站被攻击的风险。

原文始发于微信公众号(Cyb3rES3c):堆叠注入

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月9日00:57:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   堆叠注入http://cn-sec.com/archives/2443398.html

发表评论

匿名网友 填写信息