반응형

리버스엔지니어링 12

[Root Me] PE DotNet - 0 protection - 리버싱 / IDA

DotNet 리버싱 문제 닷넷은 .NET 라고도 쓰며 마이크로소프트에서 제공하는 윈도우 프로그램 개발 환경을 말한다. 닷넷 앞에있는 PE는 Portable Executable 의 약자로 윈도우에서 실행파일을 의미한다. 그냥 exe 파일이라고 생각하면 된다. 문제 제목에 있는 0 protection 은 아무런 보호조치가 되어있지 않다는 뜻으로 아주 쉬운 문제임을 알려준다. 문제 파일로 주어지는것은 ch22.exe 파일이다. exe 파일을 실행시켜 보면 이렇게 조그만 창이 하나 뜨면서 Password 입력을 요구한다. 비밀번호 입력창에 hello 라고 시험삼아 입력해봤는데 당연히 틀렸기때문에 Bad password 라는 알림창이 뜬다. 좀더 자세히 보기위해 IDA 라는 디스어셈블러를 이용했다. IDA를 실행..

워게임/Root Me 2022.07.10

[Root Me] ELF C++ - 0 protection - 리버싱 / IDA / GDB

C++ 리버싱 문제 C++ 리버싱은 처음 해본거 같은데 생각보다 어려워서 놀랐다. C 랑 큰 차이 없지 않을까 생각하고 시작했다가 큰코다쳤다.. 문제의 목표는 올바른 password를 찾는것이다. 문제파일로 주어지는 것은 ch25.bin 파일이다. 먼저 프로그램을 실행시켜 보았다. 터미널에서 ./ch25.bin 이라고 입력하면 실행이 되는데 그냥 실행시켰더니 usage : ./ch25.bin password 라면서 사용법이 출력된다. ./ch25.bin hello 라고 password를 인자로 넣어서 실행시켜 주니 비밀번호가 틀렸다는 안내 문구가 출력된다. IDA 라는 디스어셈블러를 이용해서 ch25.bin 파일을 열어보았다. c로 만들어진 프로그램이라면 오른쪽에 깔끔하게 어셈블리어가 잘 보이는데 c++..

워게임/Root Me 2022.06.30

[Root Me] PE x86 - 0 protection - 리버싱 / Ollydbg

Root Me 에서 제공하는 세번째 리버싱 문제 이번 문제는 greHack CTF 2012 해킹대회에서 실제 출제되었던 문제라고 한다. 앞에서 풀었던 두 문제는 ELF 파일이었는데, 이번에는 PE 파일이 주어진다. PE 파일은 Portable Executable의 약자로 그냥 우리가 흔히 보는 윈도우에서 실행 가능한 EXE 파일이다. 문제의 목적은 주어지는 프로그램의 password를 알아내는 것이다. 이것이 문제에서 주어지는 ch15.exe 파일이다. 해당 프로그램은 윈도우의 cmd 창을 이용해서 실행시킬 수 있다. 프로그램이 저장된 경로에서 ch15.exe 라고 입력해봤더니 Usage : ch15.exe pass 라면서 사용법을 알려준다. pass 자리에 비밀번호를 넣으면 되는것이다. 알려준 사용법대..

워게임/Root Me 2022.06.22

[Root Me] ELF x86 - Basic - 리버싱 / IDA

Root Me의 두번째 리버싱 문제 아직까지는 아주 쉬운 문제이다. 문제 설명을 보면 Find the validation password. 라고 적혀있다. 제목부터 Basic 이니 비밀번호는 아주 쉽게 찾을 수 있다. 문제파일로 ch2.bin 파일이 주어지는데 해당 파일을 HxD 프로그램으로 열어보면 문제 제목에서도 나온것처럼 ELF 파일인것을 확인할 수 있다. 뒤에 오는 x86은 32bit 환경에서 만들어진 프로그램임을 알려준다. 리눅스 환경에서 file ch2.bin 명령어를 통해서도 확인이 가능하다. ELF 파일은 리눅스에서 실행 가능한 EXE 파일같은거라고 생각하면 된다. 실험삼아 ./ch2.bin 명령어로 프로그램을 실행시켜 보았다. username: 이라고 출력되면서 사용자 입력을 받는데 he..

워게임/Root Me 2022.06.18

[Root Me] ELF x86 - 0 protection - 리버싱 / IDA

Root Me에서 제공하는 첫번째 리버싱 문제 아무래도 첫번째 문제이기때문에 아주 쉽다.(배점도 5 point 밖에 안된다.) 제목도 참 정직하다. 문제파일로 ch1.bin 파일이 주어지는데 해당 파일을 HxD 프로그램을 이용해 열어보면 ELF 파일인것을 확인할 수 있다. 제목의 ELF 뒤에 오는 x86은 32bit 환경에서 동작하는 프로그램임을 알려주고, 0 protection은 말 그래도 아무런 보안조치도 되지 않은 프로그램 이라는 뜻이다. 리눅스 환경에서 file ch1.bin 명령어를 통해서도 확인할 수 있다. ELF 파일은 리눅스에서 실행 가능한 EXE 파일같은거라고 생각하면 된다. 실험삼아 ./ch1.bin 해서 프로그램을 실행시켜 봤다. Veuillez entrer le mot de pass..

워게임/Root Me 2022.06.16

[UMDCTF] Twilight Zone - 리버싱 / dnSpy

리버싱 문제 생각보다 어려워서 시간을 많이 투자했다. 문제파일로 TwilightZone.exe 파일이 주어진다. 주어진 exe파일을 실행시키면 이렇게 느끼한 아저씨 사진과 함께 비밀번호를 입력하는 창이 뜬다. 비밀번호칸에 hello 라고 시험삼아 입력해봤는데 당연히 틀린 비밀번호기 때문에 Not happening! 이라는 알람창이 뜬다. exe 파일이니 평소에 하던대로 디스어셈블러인 IDA 프로그램으로 열어보았다. 그런데 평소와 다른 인터페이스가 나왔다. .NET으로 개발하면 이런식으로 나온다고 한다. Mystery라는 함수가 있어서 내용을 살펴보는데 뭔가 암호화시켜서 저장하고 있는듯 보였다. 아무래도 비밀번호를 내부에 암호화해서 저장하고 있는듯 하다. IDA로 이리저리 보다 너무 가독성이 떨어져서 어떻..

CTF/리버싱 2022.05.11

[UMDCTF] Santa Mysterious Box - 리버싱 / IDA

이 문제를 2년전에 풀어보고 이번에 포스팅 하면서 다시 풀어봤는데 예전과 달리 넘 쉽게 풀려서 어이가 없었다. 예전에 풀때는 ltrace를 이용해서 노가다해서 풀었는데 다시보니 사실 그럴 필요가 없는 문제였다. 문제 설명을 읽어보면 산타할아버지가 박스를 주는데 비밀번호를 맞춰야 사탕을 주고, 나머지 사람들은 석탄을 준다고 한다... 문제 파일로 SantaBox라는 이름의 바이너리 파일이 주어진다. 칼리 리눅스에서 file 명령어를 통해 해당 바이너리의 정보를 확인해보면 ELF 파일임을 알 수 있다. ELF 파일은 리눅스에서 실행 가능한 EXE 파일같은거라고 생각하면 된다. 시험삼아 바이너리 파일을 실행시켜 본다. 실행시키면 저렇게 Enter code here: 라고 뜨면서 입력을 받는데 giveme 라고..

CTF/리버싱 2022.05.03

[UMDCTF] Easy Money - 리버싱 / Strings

제목처럼 쉬운 리버싱 문제 money 라는 이름의 바이너리 파일이 주어진다. 칼리 리눅스에서 file 명령어를 통해 해당 바이너리의 정보를 확인해보면 ELF 파일임을 알 수 있다. ELF 파일은 리눅스에서 실행 가능한 EXE 파일같은거라고 생각하면 된다. 프로그램은 아주 간단하다. 내 이름을 물어보고 입력을 받는다. hello 라고 입력해봤더니 Hello hello 라고 내가 입력한 값을 그대로 에코 해준 뒤 프로그램이 종료된다. 프로그램을 조금 더 자세히 보기위해 strings 명령어를 사용해봤다. strings 명령어를 사용하면 바이너리에서 문자열을 찾아서 출력해준다. 중간에 보니 아까는 보지 못했던 문장들과 밑에 뭔가 인코딩된 값이 길게 쓰여있는걸 확인할 수 있었다. 조금 내리다가 Hello fri..

CTF/리버싱 2022.05.02

[AUCTF] Cracker Barrel - 리버싱 / IDA

간단한 리버싱 문제이다. crack_barrel 이라는 바이너리 파일이 하나 주어진다. 미국에 있는 음식점 체인 이름이라고 하던데 문제와 무슨 연관이 있는지 잘 모르겠다. 해당 바이너리 파일은 리눅스에서 실행가능한 elf 파일이다. 리눅스의 exe 라고 생각하면 된다. 프로그램을 실행시켜 보면 Give me a key! 하면서 키값을 요구한다. abcd를 입력해봤는데 아니라고 하면서 프로그램이 종료된다. 디스어셈블러인 IDA 프로그램을 이용해서 해당 바이너리 파일을 열어봤다. 함수목록을 보면 main, check, check_1, check_2, check_3, print_flag 가 있는것을 볼 수 있다. 추측컨데 check 함수들을 모두 통과해야 print_flag 가 실행될 듯 하다. 가장먼저 ma..

CTF/리버싱 2022.04.02

[RiftCTF] Reversing 0x0002 - 리버싱 / IDA

아주조금 복잡한 리버싱 문제 대회가 끝나고 풀어서 캡쳐가 원활하지 않다. chall2.elf 파일이 주어진다. elf파일은 Executable and Linkable 의 약자로 보통 리눅스에서 실행되는 파일이다. 리눅스의 exe 파일이라고 생각하면 된다. 이런식으로 실행이 가능하다. ./chall.elf 라고 입력하면 실행이 된다. 프로그램을 실행하면 passwd > 라는 창이 나오면서 비밀번호를 입력하라고 한다. 이 문제의 의도는 이 비밀번호를 알아내는 것이다. IDA 라는 디스어셈블러를 이용해 해당 파일을 열어본다. main 함수를 보면 비밀번호가 맞으면 "Correct Password..." 틀리면 "Wrong Password..." 을 프린트한다는것을 알 수 있다. 해당 그래프가 있는 화면에서 F..

CTF/리버싱 2022.03.30
반응형