War Game 38

[SCTF 2023] BOF102 - writeup

다음 문제도 마찬가지로 스택에서의 BOF를 다룬 문제이다. 한 문제만에 난이도가 꽤 올라가긴 했는데, 역시 코드부터 살펴보도록 하자. #include #include char name[16]; void bofme() { char payload[16]; puts("What's your name?"); printf("Name > "); scanf("%16s", name); printf("Hello, %s.\n", name); puts("Do you wanna build a snowman?"); printf(" > "); scanf("%s", payload); printf("!!!%s!!!\n", payload); puts("Good."); } int main() { system("echo 'Welcome t..

War Game/CTF 2023.08.22

[SCTF 2023] BOF101 - writeup

Hackers' Playground로 명칭이 변경되었지만, 익숙한 SCTF 명칭으로 사용하도록 하겠다. 간단한 Stack Buffer Overflow 문제이다. scanf, strcpy와 같이 사용자로부터 입력받은 값을 변수에 저장할 때에, 값을 저장하는 변수의 가용 공간을 고려하지 않고 사용자의 입력값 전체를 대입하는 과정에서 할당받은 범위를 벗어나 그 이후의 영역에까지 값을 작성해버리는 취약점이다. 먼저 코드를 살펴보도록 하자. #include #include #include #include void printflag(){ char buf[32]; int fd = open("/flag", O_RDONLY); read(fd, buf, sizeof(buf)); close(fd); puts(buf); } ..

War Game/CTF 2023.08.22

[Rev] Abex' CrackMe 1 w/ DLL Injection

리버싱 초심자들에게 필수 코스인 Abex CrackMe 1단계 (CD ROM 그 문제)를 대상으로 간단한 DLL Injection을 이용하는 방법으로 해결한 풀이를 발견해 정리해봤다. DLL Injection을 처음으로 시도해보는 컨셉이기에 DLL 내용 자체가 대단하진 않고 이러한 방식으로 DLL을 짜서 공격을 수행해볼 수 있다 정도의 체험을 해봤다는 느낌으로 봐주길 바란다. 0x40103D에 로드된 함수의 실행 결과에 따라 ESI 값과 비교하여 성고 또는 실패 다이얼로그를 띄우는 코드로 점프하는 분기가 0x401026에 담겨있다. DLL을 이용해 저 부분의 코드를 조작할 수 있다면 디버거에 의한 개입 없이 프로그램을 무력화할 수 있게된다. 물론 이 경우, DLL의 목표는... 0x401026의 opco..

War Game/misc 2023.05.22