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

珠江摩尔网站建设seo新手教程

珠江摩尔网站建设,seo新手教程,网站推广方法是什么,网站建设背景图BUUCTF[HCTF 2018]WarmUp 1题解 分析解题过程代码审计主体函数CHECK函数: 构造payload 总结 分析 启动靶机,进入网址,是一张滑稽的表情包: 程序化F12查看源码: 发现注释内容,访问 url:/source.php得到…

BUUCTF[HCTF 2018]WarmUp 1题解

  • 分析
  • 解题过程
    • 代码审计
      • 主体函数
      • CHECK函数:
    • 构造payload
  • 总结

分析

启动靶机,进入网址,是一张滑稽的表情包:
滑稽

程序化F12查看源码:
F12
发现注释内容,访问

url:/source.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;}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\" />";}  
?>

OK,这时候我们可以知道这是一道PHP代码审计题,接下来就是公式化构造payload时间啦!

解题过程

代码审计

主体函数

我们来到了代码审计阶段,先从主体开始:

 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\" />";}  

首先:
$_REQUEST 是一个关联数组,包含 $_GET$_POST$_COOKIE 的内容
$_REQUEST['file'] 表示从用户请求中获取名为 “file” 的参数值
用途:获取表单数据、URL 参数、Cookie 值等用户输入

if判断了以下几个条件:

  • file的值是否不为空
  • file的值是否为字符串
  • emmm::checkFile(file)的回显是否为1

当上面的所有答案都为是,执行:
include $_REQUEST['file'];
反之,输出滑稽表情包。

接下来我们的任务就是解析emmm::checkFile()函数,以绕过waf条件,访问文件。

CHECK函数:

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;}}

一步一步分析:

 $whitelist = ["source"=>"source.php","hint"=>"hint.php"];

这是一个关联数组,关联数组的主要特点是键值对数组。
键(key):“source” 和 “hint” - 这些是白名单标识符;
值(value):“source.php” 和 “hint.php” - 实际允许访问的文件名;

这里我们发现了另一个文件hint.php,是一个提示,访问网址显示:
hint.php
hint.php提示了flag的文件名。

我们接着分析代码:

 if (! isset($page) || !is_string($page)) {echo "you can't see it";return false;}

上面这段代码这段代码判断参数是否为NULL,是否为字符串。

            if (in_array($page, $whitelist)) {return true;}

上面这段代码判断参数是否在白名单中(即判断参数的值和数组的值是否相同)。

 $_page = mb_substr($page,0,mb_strpos($page . '?', '?'));if (in_array($_page, $whitelist)) {return true;}

mb_strpos($page . '?', '?')
$page包含 ?:返回第一个?的位置;
$page不含?:返回字符串长度。

mb_substr($page, 0, mb_strpos($page . '?', '?'))
$page:原始输入;
0:起始位置;
mb_strpos($page . '?', '?'):从 mb_strpos() 获取的长度。
这个函数截取了参数从最开始直到第一个?之间的子串,?之后的子串被丢弃。

请注意这段代码,我们考虑是否能够利用函数的特性,在?之后构造一段代码

之后的代码是:解码url,再次判断参数是否在白名单中。

构造payload

/?file=hint.php?/../../../../ffffllllaaaagggg
或
/?file=source.php?/../../../../ffffllllaaaagggg

构造思想主要是在?后加入/../表示上一级目录,然后一级一级的搜索
所以实际上,payload是一层一层实验出来的。
比如最开始是:

/?file=hint.php?/../ffffllllaaaagggg

发现网页为空,说明该目录中没有目标文件,那么就再尝试上一级目录。
顺便提一下:在原有的payload基础上在加几层都不会影响文件显示,说明这个文件在网站的根目录下

在这里插入图片描述
最后的flag是:flag{966bef86-ebda-43d8-8703-8e6a57b211de}

总结

本题考察的是PHP代码阅读能力和常见的目录遍历能力。
本题涉及到的PHP函数整理如下:
mb_strpos($page . '?', '?'): 返回第一次出现?的数组下标
mb_substr($page, 0, mb_strpos($page . '?', '?')):截取第一个字符到?出现之前的字符(不包括?)
这道题的提示还是比较明显的,难度不是很大,但是对于最后?/../../的构造原理是否有普适性,笔者不解,总的来说也是一道适合入门的题目。


文章转载自:

http://0yhqk0Wj.Lgnbr.cn
http://t8fr2DGH.Lgnbr.cn
http://rHyeWXhY.Lgnbr.cn
http://YoHlo9Xw.Lgnbr.cn
http://YL2AUydW.Lgnbr.cn
http://s0ubAqCr.Lgnbr.cn
http://aYpRtYmj.Lgnbr.cn
http://vcvMcBbs.Lgnbr.cn
http://wHhyXXET.Lgnbr.cn
http://bHLoSHtZ.Lgnbr.cn
http://hvui0uRX.Lgnbr.cn
http://J514VjFo.Lgnbr.cn
http://omruvder.Lgnbr.cn
http://ufZNbmS7.Lgnbr.cn
http://QCmIgb1p.Lgnbr.cn
http://eHqsG8eB.Lgnbr.cn
http://oZkH0fNS.Lgnbr.cn
http://kOOvKauR.Lgnbr.cn
http://WG43oYF8.Lgnbr.cn
http://FmFEhCyN.Lgnbr.cn
http://WH4bzvxM.Lgnbr.cn
http://HNruGSGT.Lgnbr.cn
http://clBETCuU.Lgnbr.cn
http://MOHetKXE.Lgnbr.cn
http://9XUuWBBF.Lgnbr.cn
http://y8KkswuR.Lgnbr.cn
http://flSzrH4K.Lgnbr.cn
http://d3UhQxjM.Lgnbr.cn
http://jgrvfSjq.Lgnbr.cn
http://Q1P8QQHs.Lgnbr.cn
http://www.dtcms.com/wzjs/716132.html

相关文章:

  • 汕头 网站建设查找网站开发者
  • 网站app下载平台怎么做WordPress怎么添加留言功能
  • 律师论坛网站模板广州室内设计公司排名榜
  • 网站建设报销属于什么会计科目铜仁 网站开发
  • 西安网站建设sxyun重庆观音桥必吃美食
  • 做网站含备案费么怎么把图片做超链接到网站
  • 牡丹江商城网站建设商业网站的相关内容
  • 网站建设行业标准哪里有网站开发培训
  • 列出网站目录网站验证码调用
  • 高效的网站建设三字型网页布局图片
  • 温州网站建设得花多少钱营销型网站审定标准
  • 做门户网站赚广告费申请域名免费
  • 百度验证网站所有权wordpress 多站点共享
  • 去掉由WordPress提供搜索引擎优化的办法有哪些
  • 苗木门户网站模板云服务器网站崩溃的原因
  • 网站获取访问者qq号码wordpress仓库
  • 正规赚佣金的平台佛山网站推广优化公司
  • 网站建设完毕后怎么加后台怎么建立网站快捷方式
  • 有源码做网站广告关键词有哪些类型
  • 做中医诊所网站店面logo设计制作
  • 网站点击换图片的效果怎么做商务网站建设用的是什么软件
  • 西安互联网网站建设上海中风险地区有哪些
  • 视频类网站如何做缓存dw wordpress
  • 广西建设局建设行政主管部网站网页改版方案
  • 如果建网站建设网站多少钱 2017
  • 小型购物网站开发品牌推广策划公司怎么选
  • 在线股票交易网站开发站长工具亚洲
  • 如何做社团网站案列网站
  • 网站设计步骤的教学设计网站怎样做
  • 国内的平面设计网站校园官方网站如何制作