X-NUCA(牛咖)联赛7月web专题赛赛前--这是个难题。试试?的解题思路 

X-NUCA(牛咖)联赛7月web专题赛赛前--这是个难题。试试?的解题思路

发表于:2016-07-29 10:00:00 来源:  合天网安实验室 阅读数(0人)



提示为自加密题


访问页面后,非常明显的image=heihei.jpg 可猜测为文件读取,返回base64编码的文件内容,


我们构造http://218.76.35.75:20106/index.php?image=index.php并解码。得到index.php的源码内容,如下所示




源码里有config关键词,并被替换了_ 。


这时候,都没出现自加密的地方。查看cookie 也没有,可能存在其他技巧点。


提出扫描器,发现存在 .idea文件夹。.idea文件夹是phpstorm工具编写Php代码时生成的文件夹。访问.idea/workspace.xml 发现如下




利用index.php?view=function_crypt.php 读取该文件。并解码,得到加密函数源码。




我们为了获取flag 。需要cookie 为正确的加密后的system用户的cookie值.可以在访问function_crypt.php文件后,可以得到guest用户的cookie值。下面就是解密函数的代码了提供如下解密函数。


最终写出poc


function ss($txt,$m){
  for($i=0;$i<strlen($m);$i++){
     $tmp .= chr(ord($m[$i])+10);
  }
  $m=$tmp;
  $tmp='';
  $txt=base64_decode($txt);
  $rnd = substr($txt,0,4);
  $txt = substr($txt,4);
  for($i=0;$i<strlen($txt);$i++){
     $key .= $txt[$i] ^ $m[$i];
  }
  $s='0123456789abcdef';
  $txt1='system';
  for($i=0;$i<strlen($txt1);$i++){
    $tmp .= chr(ord($txt1[$i])+10);
  }
  $txt1=$tmp;
  $tmp='';
  for($i=0;$i<16;$i++){
     $tmp = $key.$s[$i];
     for($ii=0;$ii<strlen($txt1);$ii++){
       $txt2 .= $txt1[$ii] ^ $tmp[$ii];
     }
     file_put_contents('1.txt',base64_encode($rnd.$txt2)."\r\n",FILE_APPEND);
     $txt2='';
   }
}

ss('eldUVRdOWRhI','guest'); // 设置获取的guest用户的cookie值。


这个生成了16个加密的密文,用burp加载后,跑一遍,即可得到flag 。


相关新闻

大家都在学

课程详情

恶意代码原理

课程详情

web防御中的代码安全

课程详情

经典网安事件