[BJDCTF2020]Mark loves cat
开始的界面没啥东西, 看了下源码好像也没啥东西
用dirsearch扫描一下
有git 泄露
用工具githack下载源码
<?phpinclude 'flag.php';$yds = "dog";
$is = "cat";
$handsome = 'yds';foreach($_POST as $x => $y){$$x = $y;
}foreach($_GET as $x => $y){$$x = $$y;
}foreach($_GET as $x => $y){if($_GET['flag'] === $x && $x !== 'flag'){exit($handsome);}
}if(!isset($_GET['flag']) && !isset($_POST['flag'])){exit($yds);
}if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){exit($is);
}echo "the flag is: ".$flag;
$$的变量覆盖
看第一个 exit($handsome)
foreach($_GET as $x => $y){if($_GET['flag'] === $x && $x !== 'flag'){exit($handsome);} }
看起来这是矛盾的, 但是可以传两个参数 , 一个是flag 一个是handsome
?handsome=flag&flag=handsome
经过一次get的变量覆盖
$handsome=$flag
$flag=$flag
然后进入到判断那里面
开始进入遍历 $_GET
第一个 $x --> handsome
可以满足 $_GET['flag']==$x 而且 $x==handsome 也满足 !==flag
然后 exit($handsome) 输出 $handsome , 经过前面的GET的变量覆盖
$handsome=$flag , 所以就可以输出flag的值了
当然也可以构造出其他的, 利用后面的 exit($yds); exit($is);
来输出flag
?yds=flag
或者
?is=flag&flag=flag
[BJDCTF2020]Cookie is so stable
题目很明显的提示了 Cookie有问题
多尝试几遍, 可以发现无论输入什么都会登进去
所以应该不会是sql注入啥的
而且这个 形式感觉挺像 ssti注入的
尝试一下 {{3*3}}
也确实能够执行 输出 9
当然前面提示说看 cookie
登录后就会发现 cookie多出一行 user , 他的值经过url解码就会发现就是我们输入的东西
直接修改里面的值 , 相应的内容也会变化
需要注意到这个ssti注入是php, 而不是python的
抓个包, 也可以看到
修改里面的user的值
通用的payload就可以打出来
https://www.cnblogs.com/bmjoker/p/13508538.html