0


[ACTF2020 新生赛]BackupFile

解题过程

​ 通过题目"BackupFile"意思可得,要我们查找备份文件

在这里插入图片描述

然而我们通过查看首页源代码得不到任何想要的信息,此时我们应该想到使用目录扫描来得到我们想要的文件名信息,这里我们用到 Web 目录扫描工具——dirsearch,第一次使用或者不熟练的参考文章:dirsearch 用法大全

我们打开该工具,使用命令:

python dirsearch.py -e git,svn,bak -u http://165c01ec-2df0-4f7f-bd4b-48e2b36441d1.node4.buuoj.cn:81

,其中 git,svn,bak 是常见的几种备份文件后缀,除此之外,还有"~、bash_history、bkf "等后缀
在这里插入图片描述

在扫描的结果中,我们发现了一个符合的文件——“index.php.bak”:

在这里插入图片描述

然后在原网址中,访问该文件——

http://165c01ec-2df0-4f7f-bd4b-48e2b36441d1.node4.buuoj.cn:81/index.php.bak

,自动下载然后打开得到如下内容:

<?phpinclude_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!";}

根据题目得,我们需要以

get

方式提交一个参数

key

,且要满足

key == str

这里涉及到一个知识点,在 PHP 的弱类型比较中,有两种比价符号——““、”=”。

其中

==

在比较时候是先将字符串类型转化为相同,再比较;

===

是先判断两种字符串的类型是否相等,再比较

==

转换字符串的过程中,遵循如下原则:

  • 当字符串开始部分不存在数值的时候,会将该字符串转换为数值 0。如var_dump('abc' == 0),结果为 True
  • 当字符串开始部分有合法数值的时候,会将该字符串转换为合法数值。如var_dump('123abc' == 123),结果为True
  • 当字符串中包含 e 或者 E 时,会将其识别为科学计数法。如var_dump('0e12asda' == 0),结果为True

所以该题中,我们要使得

$key == $str

,且

$key

不能为字符,故可以构造Payload:

?key=123

,得到 Flag:

在这里插入图片描述


本文转载自: https://blog.csdn.net/weixin_41571993/article/details/127163898
版权归原作者 丙戌年1101 所有, 如有侵权,请联系我们删除。

“[ACTF2020 新生赛]BackupFile”的评论:

还没有评论