【攻防世界】warmup (代码审计)

简介: 【攻防世界】warmup (代码审计)

进入题目环境,只有一个表情:

ctrl + u 查看源代码:

源代码提示我们访问 /source.php。访问结果如下:

我们进行代码审计,发现解题的关键点 include &_REQUEST['file']。但是题目使用了白名单进行了过滤。我们发现白名单中有 hint.php,尝试访问:

通过访问 hint.php 可知,flag在ffffllllaaaagggg中,读取ffffllllaaaagggg为我们现在的主要目的。

我们继续审计过滤函数 checkFIle():

首先利用 in_array函数检查 $page 是否在 白名单中,以此返回 true or false。

然后利用 mb_substr() 函数 与 mb_strops()函数来截取 $page 字符串中 第一个字符到第一个 "?" 的位置中间的字符串,并检查所截取字符串是否在白名单中,以此返回 true or false。

mb_substr() 函数:

第一个参数 $page : 所要截取的目标字符串。

第二个参数 0 :开始截取的初始位置。

第三个参数 :结束截取的位置。

mb_strpos() 函数:

第一个参数:目标查询字符串。

第二个参数:要查找的字符。

第三个参数:规定开始搜索的位置。若未提供此参数,将从字符串头开始搜索。

最终函数返回要查找字符第一次出现的位置。

根据过滤函数的过滤特性,我们可以构造payload:

?file=source.php?/ffffllllaaaagggg

为什么要使用 ?/ 的格式。

如果include的文件名中含有“/”,那么它会识别其为一个带目录的文件,只有最后一个“/”后的字符串对应的文件会被包含,而前面的字符串都只是在指定目录。

故我们可以利用 ../ 来回到上一级目录中,通过不断回溯找到 ffffllllaaaagggg 文件并读取。

构造 payload 并提交,页面如下:

相关文章
|
6月前
|
PHP
【攻防世界】easyphp(PHP代码审计)
【攻防世界】easyphp(PHP代码审计)
|
11月前
|
安全 小程序 PHP
PHP代码审计(七)Rips源代码审计系统使用教程
上一篇中提到的Seay源代码审计系统是由C#编写的winform程序,现在已经停止更新了,但是,还是比较好用的。 PHP代码审计还有另一个工具,也是一个神器Rips
296 0
|
11月前
|
安全 小程序 PHP
PHP代码审计(五)PHP代码审计方法与步骤
(1):获取到网站源码(这就是废话……) (2):将网站部署到你自己的环境中,能运行。 这里特殊说明一下我的习惯,我本地的环境与线上的环境基本上保持一致,这样在本地审计及线上部署的时候能发现更多的问题。不建议说是随便搭个环境能跑起来就行,这样不是很严谨。 (3):拿到源码之后,浏览大概的项目结构。
121 0
|
11月前
|
Shell PHP Windows
PHP代码审计(四)PHP文件操作函数(2)
改变文件所有者。如果成功则返回 TRUE,如果失败则返回 FALSE。 语法:chown(file,owner)
73 0
|
11月前
|
安全 Unix Shell
PHP代码审计(四)PHP文件操作函数(1)
改变文件所有者。如果成功则返回 TRUE,如果失败则返回 FALSE。 语法:chown(file,owner)
71 0
|
11月前
|
安全 小程序 PHP
PHP代码审计(六)Seay源代码审计系统使用教程
www.cnseay.com/ 当然,这个已经不能访问了。 软件的版本比较早,需要.NET framework3.5框架,我这里是软件启动的时候自动提醒安装,如果没有自动提醒,那么你需要手动安装.NET frameWork3.5框架,否则,程序应该是没有办法运行。
1120 0
|
5月前
|
SQL 监控 安全
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
|
11月前
|
XML 开发框架 .NET
代码审计之PHP基础铺垫
代码审计之PHP基础铺垫
88 0
|
11月前
|
小程序 Shell PHP
PHP代码审计(四)PHP文件操作函数(3)
改变文件所有者。如果成功则返回 TRUE,如果失败则返回 FALSE。 语法:chown(file,owner)
53 0
|
11月前
|
SQL 小程序 Shell
PHP代码审计(三)php中代码执行&&命令执行函数
string system(string command,int &return_var) 可以用来执行系统命令并直接将相应的执行结果输出 system() 输出并返回最后一行shell结果。
89 0