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

工程信息网站哪家做的较好wordpress音乐悬浮

工程信息网站哪家做的较好,wordpress音乐悬浮,好网站建设公司选择哪家好,做excel的网站打开靶机&#xff0c;进入界面&#xff1a; 信息搜集 当前界面没有任何有用信息。 想到查看页面源代码。右键–查看页面源代码 看到hint&#xff1a;<!--source.php--> 进入/source.php页面&#xff0c;看到页面源代码&#xff1a; <?phphighlight_file(__FILE_…

打开靶机,进入界面:
在这里插入图片描述

信息搜集

当前界面没有任何有用信息。
想到查看页面源代码。右键–查看页面源代码
在这里插入图片描述
看到hint:<!--source.php-->

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

解题步骤

创建了一个类emmm,先不管,先看看后面真正被执行的代码:

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

是一个条件判断语句。分析一下:

empty() 检查变量是否为空
is_string() 检查变量是否为字符串
emmm::checkFile() 调用emmm类中的checkFile方法
$_REQUEST[‘file’] 获取GET或POST传参的数据,参数为file

所以这里的判断就是:
当传入的变量file不为空 是字符串 checkFile()结果为true时,返回值为true.在当前界面包含file指向的文件。
那么关键就在于让 checkFile()结果为true。所以我们审计一下该方法:

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

第一处:
! isset($page) || !is_string($page) isset()判断传入的参数page(方法中的page就是我们传入的参数file)是否已设置并且非空;is_string()判断参数是否为字符串。当两者同时为true时,进入下一处条件判断。
第二处:
in_array($page, $whitelist) in_array()判断参数page是否位于whitelist数组中.
由于$whitelist = ["source"=>"source.php","hint"=>"hint.php"];所以合法的值只有source.php和hint.php。
现在我们所在的界面是source.php,所以我们令file=hint.php,返回值为true,就能包含hint.php,查看该文件的内容。
在这里插入图片描述提示flag在ffffllllaaaagggg文件。但是该文件不在whitelist数组中,所以这一处的条件判断我们不能让它返回true,而是要进入下一步。

第三处:

mb_substr() 用于截取字符串,第一个参数为字符串,第二个和第三个参数分别为起始索引和终止索引。
mb_strpos() 用于查找指定字符串在目标字符串中首次出现的位置。第一个参数是目标字符串,第二个参数是只当字符串。

$_page = mb_substr($page,0,mb_strpos($page . '?', '?'));在参数page中截取字符串。
起始索引为0,也就是从头开始截取。
终止索引为参数page拼接一个?后,?首次出现的位置。
if (in_array($_page, $whitelist)) {return true;}

如果_page在whitelist中,也return true。
所以我们可以在file=hint.php后面拼接问号,在问号后面输入我们真正要包含的文件。
构造payload:

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

mb_substr()会截取问号之前的数据,也就是截取了hint.php带入白名单查询,查询结果为true,返回值为true.
成功执行了include $_REQUEST['file'];
这里的flag文件放在了根目录,而我们当前所在的目录是/var/www/html/hint.php
因此使用了四个…/回到根目录,获取flag.

http://www.yayakq.cn/news/62068/

相关文章:

  • 做资金盘网站违法吗哪个cms方便快速建站
  • 设计logo网站赚钱南宁网站建设索王道下拉
  • 网站的布局结构亚马逊aws永久免费服务69
  • 怎么创建一个网站如何在一个数据库做两个网站
  • 校考前做试题的网站网站建设死人接单
  • 网站免费建站中国职业培训在线
  • 网站建设台州动漫画设计与制作是学什么
  • 怎么做个人网站建设修改wordpress自带小工具
  • 网站建设氺金手指排名15在哪里做企业网站
  • 网站开发技术的发展流程图公众平台公众号平台
  • 网站自己建设国家城乡建设网站
  • 系部网站建设标准四川建设网证书查询
  • 织梦网站tag自定义插件网站建设公司资料大全
  • 宁波网站建设的步骤过程龙口网站制作价格
  • 设计论坛最好的网站厦门广长翔建设有限公司
  • 建设厅网站怎么打印不出来一个公司可以做几个网站
  • 服务器做网站上传快好还是下载快好装修设计软件知乎
  • 松江网站建设品划网络设备上哪个网站做外贸推广
  • 四川建设招标网站首页安居客官网网站
  • 吉林市网站制作哪家好网站地址查询网
  • ASP.NET2.0网站开发全程解析设计网站如何推广
  • 张家港安监站网址网站推广站
  • 美妆网站建设项目计划书怎样做博客网站
  • 互联网网站建设月总结h5模板免费下载
  • 网站数字化建设佛山做网站设计制作价格
  • 如何细分行业 做网站赚钱阿里免费域名申请
  • 企业网站制作的市场数字报网站模板
  • 乌海网站建设公司html5单页模板
  • 做网站需要哪些程序个人简历 网站开发
  • 电子商城网站开发多少钱论文引用网站怎样做脚注