어디서 잘못 생각했는지 궁금합니다
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_size16 이라는 걸 보고 블럭을 16 byte 씩 나눈 후 cbc 모드이기 때문에 첫번째 블럭 -> 두번째 블럭 -> ... -> 네번째 블럭 이렇게 영향을 주는 것으로 이해했습니다. 그래서 첫번째 블럭의 마지막을 0x00 ~ 0xff 까지 브루트포스 해보며 찾아보려 했는데 응답이 모두 UnicodeDecodeError로 뜹니다. 제 생각이 맞다면 하나는 ValueError 가 떠야 하는데 어디서 잘못 생각했을까요..?

#웹해킹 #암호학 #padding
작성자 정보
답변 1
yc54616
공부벌레

https://hacksms.tistory.com/50
이 글보고 해결했습니다

2023.12.21. 20:06
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기