Return-to-libc
-
RTL_CoreCTF/HackCTF 2021. 2. 1. 02:53
Disassembly 디스어셈블리 undefined4 main(void) { int32_t iVar1; char acStack36 [4]; char *s; undefined *puStack12; int32_t var_4h; puStack12 = &stack0x00000004; setvbuf(_reloc.stdout, 0, 2, 0); puts("코어 파일에 액세스중입니다...\n패스코드를 입력해주세요"); printf("Passcode: "); gets(acStack36); iVar1 = check_passcode(acStack36); if (iVar1 == _hashcode) { puts("코드가 일치하구나. 좋아, 다음 단서를 던져주지"); core(); } else { puts(0x8048881);..
-
RTL(Return-to-libc)CTF/PWNABLE 2021. 1. 16. 03:55
Constraint 제약 조건 Libc base address(라이브러리에 존재하는 gadget을 사용하기 위해) Stack buffer overflow(지역 변수에서의 overflow를 이용해 ret를 gadget의 주소로 조작) Function Epilogue(함수가 exit(0)등을 통해 종료될 경우 ret을 호출하지 않으므로) PRELIMINARY 서론 NX bit(No-eXecute bit)는 실행해야 할 명령어가 존재하는 코드 영역과 데이터가 저장되는 영역의 실행 권한을 분리하고자 도입된 기술이다. NX 특성으로 지정된 메모리 영역은 데이터 저장을 위해서만 사용되므로 buffer overflow를 통한 공격을 어렵게 한다. 위와 같이 NX bit가 적용된 바이너리를 vmmap을 통해 분석해 본..