[NISACTF 2022]easyssrf

发布时间:2023年12月22日

[NISACTF 2022]easyssrf wp

ssrf 的题目,提示了会使用 curl 连接输入的网站并返回响应包。

测试连接百度

直接在输入框中写 www.baidu.com 是无法连接的,需要在前面加入 http 或者 https ,因为 curl 的使用方式就是:

curl http://www.baidu.com

可以看到成功返回了:

在这里插入图片描述

查看本地文件

直接使用 file:///etc/passwd 似乎没办法访问,返回结果如下:

在这里插入图片描述

尝试用 http 协议访问一下本地: http://127.0.0.1 ,是可以成功访问的,那么我猜猜看当前目录下有没有 flag 文件:

http://127.0.0.1/flag

返回结果如下:

在这里插入图片描述

这里给出了一点提示,去查看根目录下的 fl4g 文件。虽然之前使用 file 文件读取失败了,使我产生了怀疑,但是这个文件是可以通过 file 协议读的:

file:///fl4g

返回结果如下:

在这里插入图片描述

提示网站目录下还有个 ha1x1ux1u.php 文件

在网站中查看 ha1x1ux1u.php 文件

直接访问: http://node5.anna.nssctf.cn:28352/ha1x1ux1u.php 即可。

返回结果是一段代码:

 <?php
     highlight_file(__FILE__);
     error_reporting(0);$file = $_GET["file"];
     if (stristr($file, "file")){ 
        die("你败了.");
 	 }
     //flag in /flag
     echo file_get_contents($file); 

get 传参

stristr 函数
语法

stristr(string,search,before_search)

参数描述
string必需。规定被搜索的字符串。
search必需。规定所搜索的字符串。如果该参数是数字,则搜索匹配该数字对应的 ASCII 值的字符。
before_search可选。一个默认值为 “false” 的布尔值。如果设置为 “true”,它将返回 search 参数第一次出现之前的字符串部分。

返回字符串的剩余部分(从匹配点),不区分大小写。如果未找到所搜索的字符串,则返回 FALSE。

示例

查找 “world” 在 “Hello world!” 中的第一次出现,并返回字符串的剩余部分:

<?php
 echo stristr("Hello world!","WORLD");
 ?>

运行结果:

world!
get 传参

根据代码,传入的参数值中不能有 “file” 这个字符串,那就没办法用 file 伪协议了。但是用了 file_get_contents 函数读文件,那就可以用 php://filter 伪协议。

payload
php://filter/read=convert.base64-encode/resource=/flag

返回结果:

在这里插入图片描述

解码得到 flag 。

文章来源:https://blog.csdn.net/m0_73612768/article/details/135158167
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。