当前位置: 首页 > news >正文

web:[HCTF 2018]WarmUp

题目

点进页面,页面只有一张滑稽脸,没有其他的提示信息

查看网页源代码,发现source.php,尝试访问一下

跳转至该页面,页面显示为一段php代码,需要进行代码审计

 <?phphighlight_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;}//isset是判断page是否为空。由于传进来的page为一个字符串且不为空,所以返回falseif (in_array($page, $whitelist)) {//对输入进行判断,是否为白名单类的内容return true;}/*in_array的意思是判断page里是否包含白名单里的内容 例如source.php  hint.php。就是page=source.php或者hint.php才行.所以最后返回了false。*/$_page = mb_substr($page,0,mb_strpos($page . '?', '?'));/*这里mb_substr 是个截断,返回0到mb_strpos之间的内容,而mb_strpos 则是查找第一次出现的位置,所以基本可以理解为获取page 两个?之间的字符串,也就是获取file两个?之间的字符串,放到url中就是http://ip/?file=ddd?中的file=ddd*/if (in_array($_page, $whitelist)) {return true;}
/*经过上面的截断代码,page=source.php  所以返回true ,文件可以得到包含,结束,下面的代码就不用在执行了*/$_page = urldecode($page);//进行url解码//输入的url会进行一次解码,通过这个函数进行再一次解码,所以对“?”要进行二次编码==》%253F(%25是%的url编码,进行过一次后为%3F,在进行一次解码后变为“?”)$_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'])//判断是否为string类型&& emmm::checkFile($_REQUEST['file'])//调用emm类中的checkFile方法) {include $_REQUEST['file'];exit;} else {echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";}  
?> 

先访问hint.php看看有没有别的提示信息

根据提示信息,进行目录穿越可获得flag,这里flag写了四次,可能使用四个或五个../

构造payload

http://1f0787c3-39e3-43b6-9583-f8ecb87aae1c.node4.buuoj.cn:81/?file=hint.php%253F../../../../../ffffllllaaaagggg

得到flag

总结

mb_substr()函数返回字符串的一部分,substr()函数,只针对英文字符,如果要分割的中文文字则需要使用mb_substr()。

若start参数是负数且length小于或等于start,则length为0

如果在测试时没有匹配到指定符号,将返回字符串长度

代码审计参考链接:

[HCTF 2018]WarmUp_ke1nys的博客-CSDN博客

[HCTF 2018]WarmUp_浑水摸鱼的咸鱼的博客-CSDN博客

http://www.lryc.cn/news/176998.html

相关文章:

  • 程序开发常用在线工具汇总
  • crypto:丢失的MD5
  • 气传导和骨传导耳机哪个好?气传导耳机好用吗?气传导耳机推荐
  • Spring 的代理开发设计
  • 实现注册手机号用户
  • 【2023年11月第四版教材】第15章《风险管理》(第三部分)
  • datart导入hive连接包
  • 2023美团秋招一面面经-已过
  • ARM Day2
  • 手把手教你制作独特优惠促销微传单
  • Qt-QImage-convertTo-copy-convertToFormat-格式转换
  • asp.net core automapper的使用
  • 自学WEB后端03-Node.js 语法
  • 对象数组合并和去重
  • 【AI语言模型】阿里推出音视频转文字引擎
  • YOLOv5改进D-LKA:在D-LKA结构的基础上进行多种改进结构,同时拥有Attention和大卷积核的能力,高效改进
  • Java项目-Spring Boot的生鲜网上交易系统
  • MySQL - group by分组查询 (查询操作 三)
  • 96.qt qml-http之XMLHttpRequest介绍详解使用
  • 代码随想录算法训练营第五十天 | 123.买卖股票的最佳时机III 188. 买卖股票的最佳时机 IV
  • 详解window.print(),实现长列表打印分页
  • 使用Chatgpt编写的PHP数据库pdo操作类(增删改查)
  • 蓝桥杯2023年第十四届省赛真题-异或和之和--题解
  • Linux 常用命令学习笔记
  • 支撑电动汽车规模化,特来电智能化升级群充产品
  • 本次CTF·泰山杯网络安全的基础知识部分
  • 通信协议:Uart的Verilog实现(下)
  • 嵌入式MCU都有什么高级用法?
  • 热启动和冷启动是什么,区别
  • 每日一题 494目标和(0-1背包)(灵神笔记)