Buuctf Web(21-24)
21、easy_tornado
题目首页有三个链接,首先查看/flag.txt,可以看到flag在/fllllllllllllag中
查看/fllllllllllllag,显示Error
并且url变成了/error?msg=Error
查看/welcome.txt,内容为render
1 | render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页 ,如果用户对render内容可控,不仅可以注入XSS代码,而且还可以通过{{}}进行传递变量和执行简单的表达式。 |
查看/hints.txt,这是一个加密方法,猜测 要构造filename=/fllllllllllllag&filehash=?
在查阅资料后发现Error就是注入点
本题是模板注入SSTI模板注入 - 简书 (jianshu.com)
参考资料Tornado小记 – 模板中的Handler - 黑翼天使23 - 博客园 (cnblogs.com)
获取handler.settings环境变量:/error?msg={{handler.settings}}
得到cookie_secret
'cookie_secret': 'caffff81-323f-48da-8323-dc1530a0c95d'
编写脚本
1 | import hashlib |
构造/file?filename=/fllllllllllllag&filehash=7d14388e78d85a8f1e726052e9d4dfbd
得到flag
1 | flag{5673c2e4-27f7-4962-8d87-f449b8069952} |
22、admin
注册一个账号
由于题目叫admin,所以注册时直接用admin了
显示用户名已经被注册过
注册一个账号
由于题目叫admin,所以注册时直接用admin了
显示用户名已经被注册过
猜密码
用123登陆成功了。。。
在网上看大佬解题思路
注册
登录,右侧依次查看
在change password的源代码中看到一个被注释的链接
访问这个链接,内容已被删除,所以就没再看了
1 | flag{88c07276-46ea-4e23-a50d-ce722b067e0f} |
23、你传你🐎呢
查看大佬的博客后,了解到,该题需要上传两个文件
一、.htaccess
文件,用来改变文件扩展名
上传该文件,抓包,修改Content-Type:image/png,send
二、木马文件,用来连接蚁剑
改名为a.png,上传,抓包,修改Content-Type:image/png,send
用蚁剑连接
URL:http://f532922c-3101-4cac-ad67-3e8b27c936fe.node4.buuoj.cn:81/upload/535c8c0c4ab4ecda962a1a3922bee31d/a.png
密码:a
没测试成功,试了很久没写出来,留着以后看
1 |
24、NiZhuanSiWei
从题目的php代码中可以知道需要用get方式传三个参数,text,file,password
有一个php文件
访问该文件,什么都没有
有一行代码说我们要传入一个文件,内容是”welcome to the zjctf”
要用到data协议,data协议通常是用来执行PHP代码,也可以将内容写入data协议中,然后让file_get_contents函数取读取。构造:data://text/plain,welcome to the zjctf
为了绕过一些过滤,用base64编码构造payload:/?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=
有一个可控参数file,构造file=useless.php,但是针对php文件我们需要进行base64编码,否则读取不到其内容,所以构造payload:/?file=php://filter/read=convert.base64-encode/resource=useless.php
完整payload:/?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=&file=php://filter/read=convert.base64-encode/resource=useless.php
得到一串base64编码
解码
得到useless.php源码
1 | <?php |
有一个 flag.php ,并且file不为空将读取flag.php并显示。所以。构造一个序列化字符串
1 | <?php |
找个在线运行PHP的网站,得到
构造payload:/?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}
查看源代码,得到flag
1 | flag{6cb4bd76-2b5f-4876-9fe0-46f02e2d0062} |