Cat
打开网页提示我们输入域名
输入百度的域名没有回显试试百度的ip地址得到以下反馈
127.0.0.1的反馈如下
输入ip执行ping命令之后返回发现为命令执行,使用管道符进行命令执行127.0.0.1 | ls
在URL的传参处?url=这里,我们传递个%79发现传递之后变成了?url=w,看来是可以传递url编码,系统会接受并进行解析,于是我们传递%80会出现报错,url编码使用的是16进制,80也就是128,ASCII码是从0-127,所以这个时候会报错。 从报错信息中发现这几个信息
推测出使用的是python站点和Django框架 查看资料发现一个解题点
根据Django的目录,我们使用@进行文件传参,对文件进行读取后还会把内容传给url参数,像上面一样超出解析范围的编码的时候就会得到报错信息 首先我们看看数据库文件,看从错误信息中能不能拿到flag,可以从配置文件settings.py的报错信息中看看有没有数据库的相关信息
?url=@/opt/api/database.sqlite3
发现flag
ics-05
题目网站
根据题目提示点进设备维护中心查看源码发现了这个
利用伪协议读取文件源码 ?page=php://filter/read=convert.base64-encode/resource=index.php
尝试base64解码
得到如下代码
通过审计代码发现需要伪造IP 127.0.0.1
伪造成功 下面介绍一下preg_replace()函数 preg_replace($pattern, $replacement, $subject) 作用:搜索subject中匹配pattern的部分, 以replacement的内容进行替换。 $pattern: 要搜索的模式,可以是字符串或一个字符串数组。 $replacement: 用于替换的字符串或字符串数组。 $subject: 要搜索替换的目标字符串或字符串数组。 底下介绍/e漏洞 /e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向 引用替换完之后)。 提示:要确保 replacement 构成一个合法的 PHP 代码字符串, 否则 PHP 会在报告在包含 preg_replace() 的行中出现语法解析错误。 尝试获取文件目录
成功读取到文件,使用find命令查找flag
读取flag文件
|