一道内部ctf文件包含题

  拿到题目

 

  在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的题还是要多看现象,给的代码不能全信,也需要自己多去思考多尝试

posted @ 2021-02-18 13:51  TJ_WaTer  阅读(391)  评论(0编辑  收藏  举报