在burp里看下
拿到源码
很明显是一道文件包含题目,包含cookie里的值,于是构造Cookie:language=chinese试试
文件变成中文的了,说明中文语言进行了包含并替换
输入flag试试
这里发现并不能直接显示出flag,而很奇怪的一点是之前的那些文字没了
经过测试这里只要不是chinese或english就会不显示文字。
刚开始我卡在这里了,想是不是代码注入,但发现并不能跳出来,于是又仔细想了想
这里变量x是写死的,按理说改变language并不会改变文件读取的内容,但是实际是改变了,所以思考这块代码并不对。
盲猜代码应该是这样的(逆向的思维用上了,怪不得大佬都说现在ctf-web也需要逆向和pwn了):
else{
@include($lan.".php");
$tmp=(str)include($lan.".php");//这一行应该是这样存了起来
}
$x=file_get_contents($tmp);//这一行把值带了进去
echofi $x;
这样的话就很简单了,file_get_contents函数可以用php伪协议去读取任意文件,这里我选择file伪协议
payload: php://filter/read=convert.base64-encode/resource=flag
总结:看来ctf的题还是要多看现象,给的代码不能全信,也需要自己多去思考多尝试
手机扫一扫
移动阅读更方便
你可能感兴趣的文章