보안/리버싱
reversing.kr - Easy ELF
병뚜
2024. 8. 26. 08:44
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