어디서 잘못 생각했는지 궁금합니다
import base64
import requests
from urllib import parse
url = "http://192.168.0.5/secure/decrypt"
sig = "b4542c3c2e913e43cf7178968ffb801a18221f10"
enc_data = "3y9s///nRipC+koRoRV+WrN85+H+KByFwVvcis9l+eexcGz1futKOizZ4E4jX7Knk8+GqUYgvQFXIDJSzNChOw=="
token = "6l9vKmmUm1sRqk6e+rkrAqR21UI7Zl0p6O6rCHkc1IZYglMsPcW3bDpEXWwIBEky"
#iv = bytes([0x00] * 16)
for i in range(0x00 , 0xff+1):
dec_data = base64.b64decode(enc_data)
cipher_1 = bytearray(dec_data[:16])
cipher_2 = bytearray(dec_data[16:32])
cipher_3 = bytearray(dec_data[32:48])
cipher_4 = bytearray(dec_data[48:64])
cipher_1[15] = i
print(hex(i))
data = cipher_1+cipher_2+cipher_3+cipher_4
send_data = base64.b64encode(data)
params = {"e_data":send_data,"token": token,"sig":sig}
res = requests.get(url, params=params)
print(res.text)
안녕하세요 padding oracle 문제를 어디서 잘못 생각했는지 궁금합니다. AESCrypto.py
에서 _block_size
가 16
이라는 걸 보고 블럭을 16 byte
씩 나눈 후 cbc 모드이기 때문에 첫번째 블럭 -> 두번째 블럭 -> ... -> 네번째 블럭
이렇게 영향을 주는 것으로 이해했습니다. 그래서 첫번째 블럭의 마지막을 0x00 ~ 0xff
까지 브루트포스 해보며 찾아보려 했는데 응답이 모두 UnicodeDecodeError
로 뜹니다. 제 생각이 맞다면 하나는 ValueError
가 떠야 하는데 어디서 잘못 생각했을까요..?
#웹해킹
#암호학
#padding
작성자 정보
답변
1
yc54616
공부벌레
https://hacksms.tistory.com/50
이 글보고 해결했습니다