[ACTF2020 新生赛]BackupFile 1
  rKeEjcARIgc2 2023年11月19日 28 0

题目环境:image.pngimage.png

好好好,让找源文件是吧?咱们二话不说直接扫它后台

使用dirsearch工具扫描网站后台(博主有这个工具的压缩包,可以私聊我领取) python dirsearch.py -u http://0d418151-ebaf-4f26-86b2-5363ed16530f.node4.buuoj.cn:81/image.png探测存活文件

image.png 不要一惊一乍哦,0B内存这是假的flag.php文件

image.png

探测出存活文件index.php.bak bak文件后缀是备份文件

下载index.php.bak文件image.png回车即可下载image.png使用记事本或者PHP编译器等工具打开即可image.png

<?php
  include_once "flag.php";

if(isset($_GET['key'])) {
  $key = $_GET['key'];
  if(!is_numeric($key)) {
    exit("Just num!");
  }
  $key = intval($key);
  $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
  if($key == $str) {
    echo $flag;
  }
}
else {
  echo "Try to find out source file!";
}

PHP代码审计

包含flag.php文件 通过GET方式传参的参数key _is_numeric()函数_用于检测变量是否为数字或数字字符串,那么加上感叹号就是如果不是数字或数字字符串就输出Just num!并退出 intval() 函数用于获取变量的整数值 if语句如果key变量与str变量相等则返回TRUE并输出flag else语句如果以上条件全部都不符合条件,则输出Try to find out source file!

进一步分析

看完代码审计是不是很慌,我猜你已经注意到了“key变量和str变量的值是不可能相等的!” 哪怎么搞呢? 别急,作者还给了我们一个惊喜! “==”PHP弱比较逻辑运算符 PHP弱比较呢只是要求运算符两边的数据类型必须一致并没有要求两个变量的值一定要相等 str变量是字符串,同时要求key变量必须是数字,并且str字符串里面存在123,所以key=123即可获得flag

构造payload: ?key=123 上传payload:image.png得到flag: flag{b7a1c0e0-3a3a-4267-999d-ad788f286d41} 原文链接:https://blog.csdn.net/m0_73734159/article/details/134295827?spm=1001.2014.3001.5501

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
  5NWiQFAVeqgX   2024年05月17日   31   0   0 网络安全
  pTtIhLb24H2d   2024年05月17日   34   0   0 网络安全
  5NWiQFAVeqgX   2024年05月17日   38   0   0 网络安全
  OKgNPeBk991j   2024年05月18日   47   0   0 网络安全
  rKgO6TN7xbYO   2024年05月17日   37   0   0 网络安全
  5NWiQFAVeqgX   2024年05月17日   50   0   0 网络安全
  5NWiQFAVeqgX   2024年05月17日   36   0   0 网络安全
  YOkriIV1Am1d   2024年05月20日   39   0   0 网络安全
  owpmXY9hzjPv   2024年05月20日   36   0   0 网络安全
  owpmXY9hzjPv   2024年05月20日   38   0   0 网络安全
  owpmXY9hzjPv   2024年05月20日   34   0   0 网络安全
rKeEjcARIgc2