[BJDCTF2020]Mark loves cat
最后更新于
最后更新于
.git泄露
变量覆盖
代码审计
目录扫描发现.git
泄露,下载源码,或者用(反正我没成功)
flag.php定义了$flag=...
很明显的变量覆盖,同样很明显不能直接传入flag=***
,否则会被覆盖,也就是考虑把其他值覆盖为flag。
如果GET传入flag=123
,在第9行就是$flag=$123
,第12行的判断就是("123" === "flag" && "flag" !== 'flag')
返回FALSE,第16行返回FALSE,第19行返回FALSE,最后相当于执行echo "the flag is: ".$123
如果POST传入flag=123
,在第6行就是$flag="123"
,第12行的判断返回FALSE,第16行返回FALSE,第19行返回FALSE,最后相当于执行echo "the flag is: 123"
所以要进行变量覆盖,flag必须是作为参数值传入,如果GET传入abc=flag
,在第9行就是$abc=$flag
,第12行的判断返回FALSE,第16行返回TRUE,输出$yds,所以直接让abc
是yds
就可以了
payload:?yds=flag
结合输入搞明白代码