mfw(命令注入)

Posted by CoCo1er on 2019-04-03
Words 351 and Reading Time 1 Minutes
Viewed Times

mfw

// 原题来自csaw-ctf-2016-quals

进入题目可以发现是一个个人网站。网站搭建提到了git,马上想到git源码泄露。

.git 源码泄露

  • 在运行git init初始化代码库的时候,会在当前目录下面产生一个.git的隐藏文件,用来记录代码的变更记录等等。在发布代码的时候,把.git这个目录没有删除,直接发布了。使用这个文件,可以用来恢复源代码。

找个git泄露源码的工具把记录拷下来(也可以直接目录里去访问..比较麻烦)

在templates下有个flag.php 意思就是让我们通过某种途径去访问到flag.php(这里把flag抹去了)

再来看看index.php

看到assert这里就可以知道是命令注入题了。想办法构造payload去执行恶意命令。

assert在php里算是个危险函数,作为断言会将字符串参数执行

file 参数传进去会加上头和尾,尾部不用考虑,我们后续用//注释即可

1
?page=123','..')===false and system('ls'); //

构造payload一个大致思想就是把strops “完善” 再在后面加上自己的命令 最后把后续部分注释

最后变成了:

assert(“strop(‘123’,’..’)===false and system(‘ls’); //‘,’..’)===false”) or die(‘Detected hacking attempt!’);

得到flag