哈希长度拓展攻击

哈希长度拓展攻击

哈希长度拓展攻击(Hash Length Extension Attacks)的实现就是基于初始链变量的值被新的覆盖。

易受长度扩展攻击:

  1. 准备了一个密文和一些数据构造成一个字符串里,并且使用了MD5之类的哈希函数生成了一个哈希值(也就是所谓的signature/签名)
  2. 让攻击者可以提交数据以及哈希值,虽然攻击者不知道密文
  3. 服务器把提交的数据跟密文构造成字符串,并经过哈希后判断是否等同于提交上来的哈希值

攻击者可以构造出{secret || data || attacker_controlled_data}的哈希值。

https://blog.csdn.net/yalecaltech/article/details/88753684

条件

1.secret(salt)(攻击者未知)(已知长度)
2.data(攻击者已知)
3.应用采用md5算法,签名算法是hash(secret||data)(||为拼接符,可以为空),已知一个对应项为
hash(secret || data) (攻击者已知)

4.追加字符为”append”(攻击时使用)

HashPump是一个借助于OpenSSL实现了针对多种散列函数的攻击的工具,支持针对MD5、CRC32、SHA1、SHA256和SHA512等长度扩展攻击。而MD2、SHA224和SHA384算法不受此攻击的影响,因其部分避免了对状态变量的输出,并不输出全部的状态变量。

HashPump https://www.cnblogs.com/pcat/p/5478509.html

jarvis oj flag在管理员手里

在这里插入图片描述

role=s:5:“guest”;

hsh可能是role的md5加密,但是不是直接加密

index.php~有源码,改为.index.php.swp,输入命令vi -r index.php恢复index.php文件

有段

$role = unserialize($_COOKIE["role"]);
if ($role==="admin" && $hsh === md5($salt.strrev($_COOKIE["role"])))

strrev()反转字符串

构造role==admin而且hsh是反转后加盐的role

unserialize()会忽略多余字符串

flag获取的要求是:传进hsh等于md5($salt.strrev($_COOKIE["role"]))

需要用MD5扩展攻击

不知道salt值长度,还需要爆破

找了别人的代码。。。

#!/usr/bin/python
# -*- coding=utf -*-
import requests,hashpumpy,urllib


def webre():
    url = 'http://web.jarvisoj.com:32778/'
    sha = '3a4727d57463f122833d9e732f94e4e0'
    string0 = ';"tseug":5:s'
    string1 = ';"nimda":5:s'
    for i in range(15):# 爆破长度
        digest, message = hashpumpy.hashpump(sha,string0,string1,i)
        payload ={'role':urllib.quote(message[::-1]), 'hsh':digest}  # quote()用于把'\x00'都变成'%00' ,message需要反转回正常role
        print(i,payload) 
        html = requests.get(url,cookies=payload).content#提交答案 
        if 'Welcome' in html: 
            print(html)
webre()

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值