[ACTF2020 新生赛]BackupFile1
2023-12-13 05:19:50
[ACTF2020 新生赛]BackupFile1 wp
进入页面,提示:Try to find out source file!
这是要在网站下翻出源代码。
使用 dirsearch 进行目录爆破
结果会被保存到一个文件里面,适当过滤一下:
可以看到网站目录下有三个文件可以访问:
flag.php,index.php.bak,manager/jmxproxy/?get=BEANNAME&att=MYATTRIBUTE&key=MYKEY
只有 index.php.bak 是有价值的,另外两个没有什么信息。
获取源代码
直接访问
http://7759f810-5e92-4d36-a925-5000d325bdfd.node4.buuoj.cn:81/index.php.bak
就可以下载了。
记事本打开:
<?php
include_once "flag.php";
if(isset($_GET['key'])) {
$key = $_GET['key'];
if(!is_numeric($key)) {
exit("Just num!");
}
$key = intval($key);
$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
{
echo $flag;
}
}
else {
echo "Try to find out source file!";
}
源码审计
用 get 方式输入一个 key ,这个 key 在经过 is_numeric 函数判断,intval 函数转换后,与 str 进行弱比较,比较成功则返回 Ture 。
is_numeric 函数
is_numeric() 函数用于检测变量是否为数字或数字字符串。如果指定的变量是数字或数字字符串则返回 TRUE,否则返回 FALSE,注意浮点型返回 1,即 TRUE。
intval 函数
intval() 函数用于获取变量的整数值。
PHP 中的弱比较 “==”
php在进行字符串与数字比较时,会强制把字符串转换为数字,而转换时会截取到第一个不是数字的字符前。
那么在进行 if($key == $str) 时,key 是个整数,而 str 是个字符串,在比较时对 str 进行强制转化,截取到第一个不是数字的字符前,即 123 ,故此只需要让传入的 key=123 即可。
拿到 flag 。
文章来源:https://blog.csdn.net/m0_73612768/article/details/134835276
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!