문제 코드#include #include char buf[32]; int main(int argc, char* argv[], char* envp[]){ if(argc
문제 코드#include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme); // smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); } } int main(int argc, char* argv[]){ func(0xdeadbeef); return 0; } 익스플로잇overflowme부분을 bof를 일으켜 key 부분을 0xcafebabe로 바꿔주면 된다. func에 카나리도 존재하므로 이를 우회해줘야한다. -> 앗 보니까 할 필요 없다. 왜냐하면 그냥 바로 키 같으면 system함수 실..
🔁ROP 시리즈🔁 [ROP 시리즈 (1)] 라이브러리와 링크 [ROP 시리즈 (2)] PLT, GOT [ROP 시리즈 (3)] Return to Library 개념 및 실습 [ROP 시리즈 (4)] 드림핵(Dreamhack) - rop 2. read@got이 참조하는 값, 즉 read의 실제 주소 찾기(얘는 랜덤한 값이다.) -> 3. 미리 구한 오프셋으로 system함수 실제 주소 찾기 이 순서로 하나하나 가면 된다. 1. read@got 구하기 e = ELF("./rop") read_got=e.got["read"] #정수로 반환되므로 페이로드로 보낼 때는 바이트로 바꿔야 함 ELF 객체는 익스플로잇에 필요한 ELF 정보를 출력해준다. 2. read의 실제 주소 찾기 read의 실제주소는 랜덤하기 때문..
문제정보 Description 이 문제는 작동하고 있는 서비스(ssp_001)의 바이너리와 소스코드가 주어집니다. 프로그램의 취약점을 찾고 SSP 방어 기법을 우회하여 익스플로잇해 셸을 획득한 후, “flag” 파일을 읽으세요. “flag” 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{…} 입니다. Environment Ubuntu 16.04 Arch: i386-32-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x8048000) Reference Stack Smashing Protector Canary Leak을 통해 버퍼오버플로우를 하는 문제이다. NX enabled..
문제 설명 Return Address Overwrite를 통해 BOF를 이끌어내서 해킹하는 문제이다. 문제 정보에 보면 NX 비트나 canary 등 보안 기법은 설정되어있지 않다는 것을 볼 수 있다. 그리고 Arch를 보니 i386-32-little 이므로 32bit 기준으로 쉘 코드를 작성해주면 된다. 주어진 코드 분석 #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { //초기화 setvbuf(stdin, NULL, _IONBF, 0); //stdin 버퍼 사용x setvbuf(stdout, NULL, _IONBF, 0); //stdout 버퍼 사용x sign..
end로 점프하면 프로그램이 종료된다고 가정하자. 프로그램이 종료됐을 때, 0x400000 부터 0x400019까지의 데이터를 대응되는 아스키 문자로 변환하면 어느 문자열이 나오는가? [Register] rcx = 0 rdx = 0 rsi = 0x400000 ======================= [Memory] 0x400000 | 0x67 0x55 0x5c 0x53 0x5f 0x5d 0x55 0x10 0x400008 | 0x44 0x5f 0x10 0x51 0x43 0x43 0x55 0x5d 0x400010 | 0x52 0x5c 0x49 0x10 0x47 0x5f 0x42 0x5c 0x400018 | 0x54 0x11 0x00 0x00 0x00 0x00 0x00 0x00 ================..