
DLL파일 로드 조건을 찾고 해당 DLL파일을 열어서 플래그를 획득하는 것 같습니다. IDA로 열어서 하나하나 들어가보죠 DLL엔트리 포인트 입니다. sub_1800015F0을 호출하네요 트리가 너무 커서 디컴파일 해보면 여러개의 함수가 있지만 sub_180001390을 봐야합니다. 다시 또 sub_1800011A0을 호출하네요 dreamhack.exe 파일 이름이 dreamhack.exe여야만 통과하는것 같네요! visual studio로 dreamhack이라는 솔루션을 만들고 #include "pch.h" int main() { // DLL 파일 로드 HMODULE hDLL = LoadLibrary(L"[경로]\\prob_rev.dll"); return 0; } 이렇게 만들어주고 실행하면? 플래그가 ..

이전의 rev-basic문제와 계속 비슷한 유형입니다. 우선 Input하는 지점을 찾고 문자열을 입력값을 비교하는 함수를 찾아야 합니다. 문자열 탐색을 통해서 Input을 찾아 이동합니다. 밑에 중단점을 찍어 둔 곳이 입력값을 처리하는 함수입니다. 대략 이렇게 생겼습니다. cmp rax,12 jae chall2.7FF693C51048 movsxd rax,dword ptr ss:[rsp] lea rcx,qword ptr ds:[7FF693C53000] movsxd rdx,dword ptr ss:[rsp] mov r8,qword ptr ss:[rsp+20] movzx edx,byte ptr ds:[r8+rdx] cmp dword ptr ds:[rcx+rax*4],edx 반복문입니다. cmp rax,12 ->..

기초적인 문제입니다(근데 푼사람은 적은...) 이 문제는 리눅스에서 pwndbg를 이용해서 풀어야 합니다. 실제 플래그도 리눅스를 써야 얻을 수 있고요 아 그리고 다운받은 후에 $ chmod +x [실행파일] 위 명령어로 실행권한을 주어야 제대로 실행 및 디버깅이 됩니다 pwndbg를 설치한 상태로 디버깅을 실행하면 위와 같이 디버깅이 실행되는것을 볼 수 있습니다. 일단 실행부터 시켜보겠습니다. 랜덤한 수가 생성이 되고 입력값을 받은뒤 결과값이 나오네요.. 이제 main함수를 봐야겠습니다. main의 일부분 입니다. get_rand_num으로 난수를 생성하고 __isoc99_scanf@plt를 통해서 입력값을 받고 xor연산을 한 다음 main+341에서 strcmp@plt를 통해서 답과 비교하는 것 같..

레벨4입니다. 실행시켜보니 디버깅 당하고있다고하고 그냥 실행키면 "정상"이라는 말이 나옵니다. 문제 설명대로 디버깅을 탐지하는 함수를 찾아봅시다 콘솔창에 "디버깅 당함"이라는 말이 올라오니까 문자열을 찾아줍시다 바로 나오네요 들어가보면 위에 함수가 바로 보입니다 IsDebuggerPresent 딱봐도 디버깅 관련인것같네요 답인것 같습니다