
[Dreamhack] 리버싱 rev-basic-3 Writeup
·
Writeup
IDA에 실행파일을 로드해서 흐름을 살펴보면Input: 여기서 인풋을 받고 검증을 통해 correct, wrong을 출력한다 Correct를 출력하는 조건이 뭔지 loc_140001193을 살펴보자 sub_140001000에서 인풋을 비교한다더블클릭해서 들어가니까 수식이 있다 일단 byte_140003000에 hex 값으로 힌트를 찾을 수 있는지 보면 뭔가 hex 값이 있긴 한데 플래그로 보이는 문자는 아닌 것 같다위에 나온 수식이 유일한 해결책인 것 같아서 다시 분석해 보겠음 arr[i] != (i ^ *(unsigned __int8 *)(a1 + i)) + 2 * i hex_value값을 이미 알고 있으니까 역으로 연산하는 식을 구하면 되겠다arr[i] != (i ^ a1[i]) + 2 * iarr..