본문 바로가기

보안/리버싱

reversing.kr - Easy ELF

1. 기드라 디컴파일

 

- scanf 함수를 보면, 입력값이 &DAT_0804a020 위치에 저장됨

- FUN_08048451() 함수 내부에서 scanf로 입력받은 위치를 검사하고 있음.

 

2. 조건

 

- DAT_0804a020 == 0x78
- DAT_0804a021 == '1'
- DAT_0804a022 == 0x7c
- DAT_0804a023 == 0xdd
- DAT_0804a024 == 'X'
- DAT_0804a025 == '\0'

올바른 입력값을 얻기 위해, 각 문자에 XOR 해주면 되겠다.

* XOR의 특징 이용

 

# input 값을 구하기
result = [0x78, '1', 0x7c, 0xdd, 'X', '\0']
input = []

input.append(result[0] ^ 0x34)
input.append(ord(result[1]))
input.append(result[2] ^ 0x32)
input.append(result[3] ^ 0x88)
input.append(ord(result[4]))  

input2ascii = ''.join(chr(i) for i in input)

print(input2ascii)

 

=> L1NUX

 

'보안 > 리버싱' 카테고리의 다른 글

reversing.kr - Easy Unpack  (0) 2024.08.26
reversing.kr - Easy Keygen  (0) 2024.08.26
x64 assembly basic  (0) 2022.07.10
Dreamhack Quiz: x86 Assembly 2  (0) 2022.07.10
86 Assembly: Essential Part(1) quiz  (0) 2022.07.08