[题目信息]:
题目名称 | 题目难度 |
---|---|
SSRF正则绕过1 | 1 |
[题目考点]:
SSRF正则绕过1
[Flag格式]:
SangFor{5IbCdntb9LqcbhdQZszyr8wnZ2Uhdj6i}
[环境部署]:
docker-compose.yml文件或者docker tar原始文件。
docker-compose up -d
[题目writeup]:
python dirsearch.py -u http://分配IP -e php
host中以Sang开头
结尾为for
[题目信息]:
题目名称 | 题目难度 |
---|---|
SSRF文件读取 | 1 |
[题目考点]:
SSRF文件读取
[Flag格式]:
SangFor{Ux5uIUUb5un08PWtsabg5mqF2oTCY8kg}
[环境部署]:
docker-compose.yml文件或者docker tar原始文件。
docker-compose up -d
[题目writeup]:
1、题目主页
<?php
if(!$_GET['site']){
$str = <<<EOD
<html>
<body>
look source code:
<form action='' method='GET'>
<input type='submit' name='submit' />
<input type='text' name='site' style="width:1000px" value="https://www.baidu.com"/>
</form>
</body>
</html>
EOD;
echo $str;
die();
}
$url = $_GET[‘site’];
$url_schema = parse_url($url);
$host = $url_schema[‘host’];
$request_url = $url."/";
if ($host !== ‘www.baidu.com’){
die(“wrong site”);
}
$ci = curl_init();
curl_setopt($ci, CURLOPT_URL, $request_url);
curl_setopt($ci, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($ci);
curl_close($ci);
if($res){
echo "<h1>Source Code:</h1>";
echo $request_url;
echo "<hr />";
echo htmlentities($res);
}else{
echo "get source failed";
}
?>
- 用file协议读取本地文件
- 绕过逻辑中对host的检查, curl是支持file://host/path, file://path这两种形式, 但是即使有host, curl仍然会访问到本地的文件
- 截断url后面拼接的/, GET请求, 用?#都可以
file://www.baidu.com/etc/passwd?
passwd读取成功,思考如何读取flag文件!