본문 바로가기
Wargame Write-Up/HackCTF

[HackCTF] (Reversing) handray 풀이

by snwo 2020. 2. 29.

문제를 다운받으면 handray elf 파일이 주어집니다. 실행시켜보면

 

개행도 해주지않고 flag를 뛰어넘었다면서 종료해버립니다. ida로 열어보겠습니다

 

string 값과 array 값으로 복호화를하는것을 확인할수있습니다.

 

    [복호화 루틴]

 

rbp+var_8 값을 counter 으로 활용해서 rbp+var_8 <= 1Eh (30d) 를 만족할때까지  0부터 30이니까 31번 실행하고있군요

4바이트단위로 나누어져있는 16진수값들이 array이고, A로 시작하는 문자열이 string 이라는걸 확인할수있습니다.

0부터 30 까지의 값을 가져와 더한뒤 string에 저장하는걸 볼 수 있습니다. 값을 가져와서 복호화프로그램을 만들어보겠습니다.

 

    [복호화프로그램]

 

값을 가져오다보니 이상한점이있었습니다. 복호화루틴은 31번실행하는데 array의 길이는 32이고, string의 길이는 33 이였습니다

이 점으로 본다면 남은 2글자는 복호화를 실행하지않고 그대로 출력한다는것을 알 수 있습니다.