[NISACTF 2022]easyssrf

[NISACTF 2022]easyssrf wp

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

测试连接百度

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

curl http://www.baidu.com

可以看到成功返回了:

[NISACTF 2022]easyssrf_第1张图片

查看本地文件

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

[NISACTF 2022]easyssrf_第2张图片

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

http://127.0.0.1/flag

返回结果如下:

[NISACTF 2022]easyssrf_第3张图片

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

file:///fl4g

返回结果如下:

[NISACTF 2022]easyssrf_第4张图片

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

在网站中查看 ha1x1ux1u.php 文件

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

返回结果是一段代码:

 

get 传参

stristr 函数
语法

stristr(string,search,before_search)

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

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

示例

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


运行结果:

world!
get 传参

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

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

返回结果:

[NISACTF 2022]easyssrf_第5张图片

解码得到 flag 。

你可能感兴趣的:(ctf,web安全,php,网络安全)