-
CFF explorer를 통해서 Entry point를 보니까, UPX packing이 되어 있길래 신나게 풀고 IDA로 뜯어 보았다.
그리고 string을 보았는 데 Flag에 대한 이야기가 있길래 따라가 보았는 데, 위와 같은 그래프가 있었다.
그런데 INS{https://www.youtube.com/watch?v=oGJr5N2lgsQ} 는 Flag가 아니었고, 아무리 찾아봐도 다른 단서를 찾지 못했다.
이 문제의 핵심은 UPX packing이었다. UPX packing을 푸는 과정에 메모리를 변화시키는 부분을 넣어서 언패킹되었을 때, FLAG가 바뀌는 것이었다...
즉, 언패킹을 하지 않고 풀어야 한다.
이 부분에 대해서 수상함을 느껴야 한다...
원래 패킹된 파일들은 다음 사진처럼 처음부터 끝까지 모두 복잡하다. 하지만 위 부분의 경우에는 패킹된 파일이 아닌, 정상적인 파일처럼 생겼다.
그래서 확인해본 어셈블리가 다음과 같다.
call edx에서 getcommandlineA 를 하길래, argv를 조작하는 것을 알았고, 어떤 루틴을 통해서 값을 조작하는 것을 알 수 있다.
마지막에보면 각각 문자에 대해서 확인해서 or dl,1을 해준 다음 마지막에 종합적으로 dl과 0을 cmp해서 jnz를 하는 것을 볼 수 있다. 이부분을 점프문 패치를 해줘서 nop로 바꾸어 줬다.
다음처럼 nop로 바꾸어 준다음 패치를 했다.
실행 했더니,
Congrats! The flag is INS{GG EZ clap PogU 5Head B) Kreygasm <3<3}
'Writeup > CTF_Writeup' 카테고리의 다른 글
[ Defenit CTF 2020 ] Lord fool song remix (0) 2020.06.08 [ Defenit CTF 2020 ] momsTouch (0) 2020.06.08 [ RCTF 2020 ] rust-flag (0) 2020.06.02 [ CODEGATE 2020 Preliminary ] RS(702pt) wripte-up (3) 2020.02.09 [Insomni'hack teaser] Welcome (0) 2020.01.21 댓글