JarvisOJ WEB flag在管理员手里

知识点

hash长度扩展攻击
深入理解hash长度扩展攻击(sha1为例)

0x01

扫描后台目录,发现index.php~,下载后打开,发现是乱码,文件头部是vim版本号。这其实是index.php的备份恢复文件,修改文件名为.index.php.swp,输入命令vim -r index.php得到恢复后的index.php。
在这里插入图片描述
源码如下:

<!DOCTYPE html>
<html>
<head>
<title>Web 350</title>
<style type="text/css">
	body {
		background:gray;
		text-align:center;
	}
</style>
</head>

<body>
	<?php 
		$auth = false;
		$role = "guest";
		$salt = 
		if (isset($_COOKIE["role"])) {
			$role = unserialize($_COOKIE["role"]);
			$hsh = $_COOKIE["hsh"];
			if ($role==="admin" && $hsh === md5($salt.strrev($_COOKIE["role"]))) {
				$auth = true;
			} else {
				$auth = false;
			}
		} else {
			$s = serialize($role);
			setcookie('role',$s);
			$hsh = md5($salt.strrev($s));
			setcookie('hsh',$hsh);
		}
		if ($auth) {
			echo "<h3>Welcome Admin. Your flag is 
		} else {
			echo "<h3>Only Admin can see the flag!!</h3>";
		}
	?>
	
</body>
</html>

0x02

解题步骤:

  1. 访问网页,得到cookie中的role和hsh这里的hsh是$slat+;"tseug":5:s经过md5加密后的值;
  2. 设置cookie中role的值,满足以下两个条件:
$role==="admin" && $hsh === md5($salt.strrev($_COOKIE["role"]))

第一个条件$role==="admin"只需要使$role参数的前5个字符是"admin",第六个字符是'\0'即可。
第二个条件$hsh === md5($salt.strrev($_COOKIE["role"])),注意和$salt连接的字符串是经过strrev函数处理的role参数,只需要构造role参数的后半部分,通过hash长度扩展攻击,经过运算得到新的hsh即可。$salt的长度暂时不知道,暂时输入一个数字10,得到新的hash值fcdc3840332555511c4e4323f6decb07以及一个接近payload的字符串;"tseug":5:s\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00;"nimda":5:s\xb0说明$salt+;"tseug":5:s一共176bit,也就是22字节,$salt长假设是10字节。
在这里插入图片描述
安装hashpump:

git clone https://github.com/bwall/HashPump
apt-get install g++ libssl-dev
cd HashPump
make
make install

0x03

;"tseug":5:s\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00;"nimda":5:s

将上述字符串中的\x替换成%;替换成%3b,倒序排列,得到:

s:5:"admin"%3b%00%00%00%00%00%00%00%c0%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%80s:5:"guest"%3b

使用burpsuite爆破salt的长度,得到flag:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

PS

只有salt在前,value在后,才可以用hash长度扩展攻击。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值