전체 글
[hxpCTF 2020] kernel-rop (with write-up) (1)
1. Introduction여러 보호 기법이 적용된 문제를 어떻게 풀 수 있는지 궁금했다. 그래서 찾아보다가 이 문제가 유명한 것 같아서 공부해보기로 했다.파일은 아래 링크에서 다운받을 수 있다. 여기서 중요한 파일은 vmlinuz, run.sh, initramfs.cpio.gz 이다.https://ctftime.org/task/14383 run.sh는 다음과 같으며, 보호 기법으로 smep, smap, kaslr, kpti가 설정되어 있는 것을 확인할 수 있다.qemu-system-x86_64 \ -m 128M \ -cpu kvm64,+smep,+smap \ -kernel vmlinuz \ -initrd initramfs.cpio.gz \ -hdb flag.txt \ -..
[reversing.kr] Position write-up
문제를 풀기에 앞서 mfc100u.dll을 확보해줘야 한다. 문제 설명은 다음과 같다.ReversingKr KeygenMe Find the Name when the Serial is 76876-77776 This problem has several answers. Password is ***p 실행하면 name과 serial을 입력하라고 나온다. 먼저 Wrong 이라는 문자열을 검색해주자. ida에서 shift+f12를 누르면 나오지 않을 수 있다. 이는 유니코드 문자열을 검색하지 않기 때문이다. 화면에서 우클릭하면 setup 메뉴가 나오는데 거기서 유니코드도 체크해줘야 한다. 이제 x로 어디서 쓰이는지 추적하면 된다.void __thiscall sub_401CD0(char *this) { int v2;..
[reversing.kr] ImagePrc write-up
이번 문제는 라업을 참고해가면서 진행했다. 마우스로 그림을 그리고 check 버튼을 눌러 검사할 수 있는 기능이 존재한다. int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ int SystemMetrics; // eax HWND Window; // eax int v7; // [esp-1Ch] [ebp-64h] struct tagMSG Msg; // [esp+4h] [ebp-44h] BYREF WNDCLASSA WndClass; // [esp+20h] [ebp-28h] BYREF ::hInstance = hInstance; WndClass.cbClsExtra = 0..
[reversing.kr] Replace write-up
일반적인 리버싱 문제의 형태인 입력 값 검증 문제다.하지만 값을 입력하면 종료된다. 원인을 찾기 위해 ida와 xdbg로 분석한다.WinMain은 단순하다.콜백 함수인 DialogFunc만 보면 된다.int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ DialogBoxParamA(hInstance, (LPCSTR)0x65, 0, DialogFunc, 0); return 0;} check 버튼을 누르면 a3 == 0x3EB을 만족하게 된다.0x3EA에는 입력한 값이 있으며, GetDlgItemInt 함수로 가져올 수 있다.즉, dword_4084D0에 입력 값이 저장된다.(0x..
[reversing.kr] Music Player write-up
리버싱 능력의 필요성을 느껴서 공부를 다시 해보려 한다..이번 문제는 라업 참고해 가면서 분석했다. GUI 기반의 mp3 player exe파일이 주어진다. 문제 설명은 다음과 같다.1분 체크 루틴을 우회하면 플래그를 얻을 수 있다고 한다.This MP3 Player is limited to 1 minutes.You have to play more than one minute.There are exist several 1-minute-check-routine.After bypassing every check routine, you will see the perfect flag. 1분이 되면 이렇게 메시지 박스가 뜬다.디버거로 어디서 이 메시지 박스를 띄우는지 확인해봐야 한다. xdbg에서 alt+k를 ..