linux密码 hash,实验吧Web-中-让我进去(Hash长度扩展攻击、加盐密码及Linux下hashpump的安装使用)...

打开网页,测试开始,注入费老大劲,看了大佬的blog才知道怎么干。

bp抓包,观察发现cookie中有个source=0,在repeater中修改为source=1,然go一下,出来了一段源代码。

$flag = "XXXXXXXXXXXXXXXXXXXXXXX";

$secret = "XXXXXXXXXXXXXXX"; // This secret is 15 characters long for security!

$username = $_POST["username"];

$password = $_POST["password"];

if (!empty($_COOKIE["getmein"])) {

if (urldecode($username) === "admin" && urldecode($password) != "admin") {

if ($COOKIE["getmein"] === md5($secret . urldecode($username . $password))) {

echo "Congratulations! You are a registered user.\n";

die ("The flag is ". $flag);

}

else {

die ("Your cookies don't match up! STOP HACKING THIS SITE.");

}

}

else {

die ("You are not an admin! LEAVE.");

}

}

setcookie("sample-hash", md5($secret . urldecode("admin" . "admin")), time() + (60 * 60 * 24 * 7));

if (empty($_COOKIE["source"])) {

setcookie("source", 0, time() + (60 * 60 * 24 * 7));

}

else {

if ($_COOKIE["source"] != 0) {

echo ""; // This source code is outputted here

}

}

意思就是username为admin,password不为admin,且$COOKIE["getmein"] === md5($secret . urldecode($username . $password))。

我们看下面的setcookie是md5($secret . urldecode("admin" . "admin")),意思是cookie是$secret连接上adminadmin的MD5加密,而还要求cookie为$secret连接上admin再连接上另一个不为admin的字符串的MD5加密。

3403c732f2009f4cedfca024ed0da4a5.png

这里我们能看到代码中的setcookie的值。

这里涉及到2个知识点和技巧。

1.加salt的加密

所谓加Salt,就是加点“佐料”。当用户首次提供密码时(通常是注册时),由系统自动往这个密码里加一些“Salt值”,这个值是由系统随机生成的,并且只有系统知道。然后再散列。而当用户登录时,系统为用户提供的代码撒上同样的“Salt值”,然后散列,再比较散列值,已确定密码是否正确。

这里的secert就很像一个未知的salt,对于这种未知salt,但过关MD5/sha1加密,目前有一个很好的办法,就是hash长度拓展攻击。

总之,加salt就是说,有你的密码+salt后再hash散列得到的值作为一个有保护性的密码,salt是随机生成的,

2.hash长度拓展攻击

该方法实现上面所说的$secret连接上adminadmin的MD5加密,而还要求cookie为$secret连接上admin再连接上另一个不为admin的字符串的MD5加密。

下面就开始hash长度拓展攻击

看大佬的blog上写得代码实现,下了一跳,本人水平太低,只会用工具。

下面直接使用:

a036035a7d4a09b43865c08edb7f13a2.png

signature为上面的setcookie的值。

因为secret长度为15,而且必须后面加上一个admin,所以长度为20.

Add那个是随便输的。

结果的第一行605cff28c1f7fbad37ef5f1dfd78028b,就是我们上面的代码中的cookie的getmein的值,

下面的admin\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\xc8\x00\x00\x00\x00\x00\x00\x00zzzz,需要将\x全部改为%,即admin%80%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%c8%00%00%00%00%00%00%00zzzz,就是我们应该传递的password的值。

然后我们修改抓的包就行了。

dd7a80559252f2f71b0fbd268beaa39d.png

这样就拿到flag了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值