黑客教程——Padding Oracle Attack&CBC字节翻转攻击详解( 三 )
echo $tmp_id."<br>";
if($tmp_id ==='weber')die($file2);
}
highlight_file(__FILE__);
?>
整理一下已知信息:
iv=
F7LMTk/3nKSVUoSQuOS/dA==
\x17 \xb2 \xcc \x4e \x4f \xf7 \x9c \xa4 \x95 \x52 \x84 \x90 \xb8 \xe4 \xbf \x74
加密后:
$Identity='MLvuYeH07rhiAa5NJ1p75A=='
$Identity='\x30 \xbb \xee \x61 \xe1 \xf4 \xee \xb8 \x62 \x01 \xae \x4d \x27 \x5a \x7b \xe4 '
目的就是传入新的iv对identity进行解密,如果解密结果为'weber'那么就爽歪歪,这里考察的就是CBC字节翻转攻击
和Padding Oracle Attack不一样,这里不需要推测中间密文,根据我上面说的
B^X^C=A^X
本来是 piapiapiapia\x04\x04\x04\x04 现在我们需要改为 weber\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B,就拿第一位来说:
我们想要把 p 改为 w,那么我就要找出 X 的值,'p'^X='w' 很容易算出 X='p'^'w' 那么我们只需要在将B异或一个 ('p'^'w'),就可以达到目的 。
exp:
import base64跑出来POST一个iv过去得到一个网址: https://c-t.work/s/034d3b3bf3fb48||verification code:2q2hwm
def bxor(b1, b2): # use xor for bytes
parts = []
for b1, b2 in zip(b1, b2):
parts.Append(bytes([b1 ^ b2]))
return b''.join(parts)
iv = base64.b64decode("h34HL5RbMPw8oTaQ+P58nw==")
text = b"piapiapiapia\x04\x04\x04\x04"
result = b"weber\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
middle = bxor(iv,text)
iv = bxor(middle,result)
print(base64.b64encode(iv))
有个附件,下载来是一个xxx.class文件考的JAVA反编译,用工具 jd-gui-1.4.0 一下就跑出来 。
得到数组,就是flag的ASCII码
q = [102, 108, 97, 103, 123, 119, 101, 54, 95, 52, 111, 103,
95, 49, 115, 95, 101, 52, 115, 121, 103, 48, 105, 110, 103, 125]
for i in q:
print(chr(i), end='')
flag{we6_4og_1s_e4syg0ing}
以上就是一次对于Padding Oracle Attack和CBC字节翻转攻击的一次初步学习,欢迎各位指正 。
文章来自我们内部小组成员:低语
推荐阅读
- kali新手常见工具分享:OSNIT跟踪工具——Trape
- 浙江独有名茶——平水珠茶
- Linux世界——ssh登录安全简单介绍
- 关注_湖北省地理标志大会暨品牌培育创新大赛优秀奖项目——大悟绿茶
- 湖北省地理标志大会暨品牌培育创新大赛优秀奖项目——大悟绿茶
- 内网渗透测试——端口转发与内网代理渗透测试实验报告
- 特产早知道——大悟绿茶
- CSRF 十大常见web漏洞——跨站点请求伪造
- 22 「网络安全」安全设备篇——抗DDOS异常流量清洗系统
- 《挚友》语音版_柔肩扛重任巾帼显担当——扶残路上的“女中豪杰”侯银霞