攻防世界——CSAW CTF 2016 Quals: mfw .git源码泄露——学习

0x01

今天从攻防世界上又看了一个题打开后,F12看到提示
在这里插入图片描述
然后看看结果:
攻防世界——CSAW CTF 2016 Quals: mfw .git源码泄露——学习_第1张图片
一片空白。em…然后尝试了一些payload都没有用。就去看了下别人写的wp发现是有个新知识点:.git源码泄露。
在百度的时候发现了一片很好的博客:https://blog.csdn.net/qq_36869808/article/details/88909961
整理的很全面很具体。
这次借鉴下大佬的话(链接:https://github.com/solei1/solei1.github.io/wiki/web源码泄露-及常见敏感文件列表):
漏洞成因:在运行git init初始化代码库的时候,会在当前目录下面产生一个.git的隐藏文件,用来记录代码的变更记录等等。在发布代码的时候,把.git这个目录没有删除,直接发布了。使用这个文件,可以用来恢复源代码。
攻防世界——CSAW CTF 2016 Quals: mfw .git源码泄露——学习_第2张图片
尝试了一下发现:
攻防世界——CSAW CTF 2016 Quals: mfw .git源码泄露——学习_第3张图片
还真有,于是用GitHack工具下载了源码。
攻防世界——CSAW CTF 2016 Quals: mfw .git源码泄露——学习_第4张图片然后一个个查看发现flag.php和其他一些源码都没有只能回过头来看index.php
攻防世界——CSAW CTF 2016 Quals: mfw .git源码泄露——学习_第5张图片发现page这个变量在GET函数后没有进行任何处理,也就是说不管怎么传值他都能通过。
后面的assert()和strpos()函数看到就知道,该百度了。又是个新知识点。
看了下别人的理解:
assert是把其参数当做php语句进行执行,所以可以可以传入system函数,通过闭合来执行system。
然后该如何构造payload呢?
结合之前的提示?page=flag,尝试构造?page=flag’ .system(“ls”).’
攻防世界——CSAW CTF 2016 Quals: mfw .git源码泄露——学习_第6张图片
发现列出了目录
再接着构造:
攻防世界——CSAW CTF 2016 Quals: mfw .git源码泄露——学习_第7张图片最后读取flag.php:
?page=flag’ .system(“cat templates/flag.php”).’
获得flag:
攻防世界——CSAW CTF 2016 Quals: mfw .git源码泄露——学习_第8张图片

你可能感兴趣的:(攻防世界——CSAW CTF 2016 Quals: mfw .git源码泄露——学习)