Dreamhack 3

[DreamHack] Return To Library

NX로 공격자가 직접 쉘 코드를 실행하는 것은 어려워졌지만, 스택 버퍼 오버플로우 취약점으로 반환주소를 덮는건 가능했다. // Name: rtl.c // Compile: gcc -o rtl rtl.c -fno-PIE -no-pie #include #include const char* binsh = "/bin/sh"; int main() { char buf[0x30]; setvbuf(stdin, 0, _IONBF, 0); setvbuf(stdout, 0, _IONBF, 0); // Add system function to plt's entry system("echo 'system@plt"); // Leak canary printf("[1] Leak Canary\n"); printf("Buf: "); rea..

[DreamHack] basic_exploitation_000 (Stack Buffer Overflow)

먼저 C 코드를 보자 1, scanf 범위가 너무 커서 BOF가 가능 2. print 함수로 buf의 주소가 출력된다?? 이거다!! buf함수로 바로 점프해서 쉘코드를 실행시킨다. 쉘코드 작성시 주의 scanf 함수의 경우 \x09, \x0a, \x0b, \x0c, \x0d, \x20 를 읽지 못함(전 까지만 입력 받는다.) 블로그 주인장은 shellcode.asm을 이렇게 작성했고 0b가 들어있네 Ah...(대충 매우 심한 욕) mov $0xb, %al 에서 문제가 생겼으니 수정한다. 이번에는 0a가 들어갔네 ㅋ 다시한다. 감격,,,드디어 성공 이제 프로그램 익스플로잇 흐름을 잡으면 main() 함수가 ret을 호출할 때 eip가 buf 위치로 이동하면서 쉘 코드를 실행할 것이다. from pwn im..

[DreamHack] Exploit Tech: Shellcode (ORW, EXECVE)

Shellcode(shellcode)는 익스플로잇을 위해 제작된 어셈블리 코드 조각 주로 일반적으로 셸을 획득하기 위해서는 exec 셸 코드를 사용한다. 만약 해커가 rip를 자신이 작성한 셸코드로 옮길 수 있다면 무시무시하겠져?? 셸코드는 어셈블리어로 구성되므로 공격을 수행할 대상 아키텍쳐와 운영체제에 따라, 그리고 셸코드의 목적에 따라 다르게 작성된다. 파일 읽고 쓰기(open-read-write, orw), 셸 획득(execve)과 관련된 셸코드를 작성해본다! ORW SYSCALL syscall rax arg0 (rdi) arg1 (rsi) arg2 (rdx) read 0x00 unsigned int fd char *buf size_t count write 0x01 unsigned int fd co..