dreamhack 24

[dreamhack : pwnable] basic_rop_x64 풀이

문제 풀이 환경 : ubuntu 16.04.7 64bit에서 ROP 문제이다. main에서 bof가 발생하고 있다. buf 크기는 0x40이지만 read로 0x400을 읽으려고 하고 있다. 페이로드를 총 두 번 짤 것이다. 첫 번째 페이로드는 libc_base를 구하기 위함이다. libc_base를 구하기 위해 read함수의 실제 주소를 leak한다. 그리고 RET를 main으로 줘서 main이 한 번 더 돌게 한다. 두 번 째 페이로드에서 RET에 system함수를 넣어 진짜 쉘을 딸 것이다. 첫 번째 payload : read 함수의 실제 주소 leak read 함수의 실제 주소를 leak하기 위해서는 어떻게 해야 할까? 출력하는 함수 인자로 read함수 got를 주면 read 함수의 실제 주소가 출..

WAR GAME/dreamhack 2021.01.20

Use-After-Free (UAF)

예전에 봤는데.. 까먹은 것 같아서 정리해보려고 한다. 참고 : dreamhack.io 환경 : ubuntu 16.04.7 동적 메모리 관리에서 가장 자주 발생하는 문제는 해제된 메모리를 정확히 관리하지 않아 발생하는 문제이다. Use-After-Free (UAF) 해제된 메모리에 접근해서 값을 쓸 수 있는 취약점이다. // uaf1.c #include #include #include int main(void) { char *a = (char *)malloc(100); memset(a, 0, 100); strcpy(a, "Hello World!"); printf("%s\n", a); free(a); char *b = (char *)malloc(100); strcpy(b, "Hello Pwnable!");..

System Hacking 2021.01.06