CTF赛题全解之CTF成长之路(四)

题目名称:PASS

考点:越权

打开页面就是一个登录界面,输入时发现密码框有输入长度限制

底部注释提示了password.txt,访问后拿到字典,使用burpsuit爆破获得密码,登录后发现响应头有一串base64编码的内容

解码后为290bca70c7dae93db6644fa00b9d83b9.php

访问这个页面发现一个留言板。

提示为以小黑的身份留言。这里我们先去尝试留言,然后抓包,发现响应头有一个islogin=0

使用控制台修改当前cookie的islogin为1,然后将请求信息中心的userlevel这个字段值修改为root,拿到flag


题目名称:decode

考点:PHP代码审计

开头题目直接把加密代码给了出来,要求解密。

我这里直接给出解密代码:


$s='=pJovuTsWOUrtIJZtcKZ2OJMzEJZyMTLdIas';
function unencode($str){
  $o='';
  $ss=base64_decode(strrev(str_rot13($str)));
  echo $ss."\n";
  //$ss=str_rot13(strrev(base64_decode($str)));
  //echo strlen($ss);
  for ($i=0;$i<strlen($ss);$i++){
    $bbb = substr($ss,$i,1);
    //echo $bbb.'\n';
    $ddd=ord($bbb)-1;
    $l=chr($ddd);
    //echo $l.'\n';
    $o=$o.$l;
  }
  echo strrev($o);
}
unencode($s);


题目名称:Javascript

考点:JS代码审计

打开界面提示登录

右击查看源代码,发现check.js,代码美化后查看到unescape内有代码,解码后的代码如下:


var strKey1 = "JaVa3C41ptIsAGo0DStAff";
var strKey2 = "CaNUknOWThIsK3y";
var strKey3 = String.fromCharCode(71, 48, 111, 100, 33);
if (uname == (strKey3 + (((strKey1.toLowerCase()).substring(0, strKey1.indexOf("0")) + strKey2.substring(2, 6)).toUpperCase()).substring(0, 15))) {
    var strKey4 = 'Java_Scr1pt_Pa4sW0rd_K3y_H3re';
    if (upass == (strKey4.substring(strKey4.indexOf('1', 5), strKey4.length - strKey4.indexOf('_') + 5))) {
        alert('Login Success!');
        document.getElementById('key').innerHTML = unescape("%3Cfont%20color%3D%22%23000%22%3Ea2V5X0NoM2NrXy50eHQ=%3C/font%3E");
    } else {
        alert('Password Error!');
    }
} else {
    alert('Login Failed!');
}

判断了用户名和密码,这里我们直接将判断条件放到控制台运行,直接得到了用户名密码

登陆成功未发现flag,再次查看代码发现unescape还有内容,url、base64解码后发现文件

访问后获得新的php文件,然后在php页面中提交登录参数,获得flag


题目名称:这里什么都没有

考点:文件包含,PHP伪协议

打开界面后显示一个输入框

在页面title发现一个LFI,认为是文件包含漏洞,使用

php://filter/read=convert.base64-encode/resource=index.php

获取源代码,拿到flag

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏
分享
评论 抢沙发

请登录后发表评论