Source Code: #include <stdio.h> #include <stdlib.h> #include <string.h> char buf[32]; int main(int argc, char* argv[], char* envp[]){ if(argc<2){ printf("pass argv[1] a number\n"); return 0; } int fd = atoi( argv[1] ) - 0x...
Desc: Daddy told me about cool MD5 hash collision today. I wanna do something like that too! Source Code: #include <stdio.h> #include <string.h> unsigned long hashcode = 0x21DD09EC; unsigned long check_password(const char* p){ int* ip = (int*)p; ...
코드 분석 int __fastcall __noreturn main(int argc, const char ** argv, const char ** envp) { char * v3; // rsi char * v4; // rdi __int64 v5; // rdx __int64 v6; // rcx __int64 v7; // r8 __int64 v8; // r9 const char * v9; // rsi...
문제 풀이 파일은 바이너리만 제공해주고, 보호기법은 모두 적용되어 있네요. ❯ ls racecar ❯ checksec racecar [*] '/HTB/pwn_racecar/racecar' Arch: i386-32-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled 먼저 IDA로 디컴파일...
// Name: ow_rtld.c // Compile: gcc -o ow_rtld ow_rtld.c #include <stdio.h> #include <stdlib.h> void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } int main() { long addr; long data; int idx; init(); pri...
문제 분석 // Name: rop.c // Compile: gcc -o rop rop.c -fno-PIE -no-pie #include <stdio.h> #include <unistd.h> int main() { char buf[0x30]; setvbuf(stdin, 0, _IONBF, 0); setvbuf(stdout, 0, _IONBF, 0); // Leak canary puts("[1] Leak ...
문제 분석 #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); si...
Return to CSU ROP를 진행할 때는 가젯이 필요합니다. 예를 들어 puts(”Hello World”) 코드를 실행시키려고 하면 pop rdi ret 가젯이 필요합니다. 하지만 바이너리에 필요한 가젯이 없는 경우가 있습니다. 이런 상황에 사용할 수 있는 기법이 RTC기법입니다. [출처] https://wogh8732.tistory.com/156 ELF 파일은 위 사진처럼 start → libc_start_main → libc_csu_...
Canaries Canaries 또는 Canary word는 버퍼 오버 플로우를 감지하기 위해 버퍼와 제어 데이터 사이에 설정 된 값입니다. 버퍼 오버플로가 발생하면 Canary 값이 손상되며, Canaries 데이터의 검증에 실패하여, 오버플로에 대한 경고가 출력되고, 손상된 데이터를 무효화 처리됩니다. Types of canaries Terminator canaries Terminator Canaries는 Canary의 값을 문자열...
ASLR ASLR(Address Space Layout Randomization)이란? 메모리 손상 취약점 공격을 방지하기 위한 기술입니다. 스택, 힙, 라이브러리 등의 주소를 랜덤한 영역에 배치하여, 공격에 필요한 Target address를 예측하기 어렵게 만듭니다. 프로그램이 실행 될 때 마다 각 주소들이 변경됩니다. 예를 들어 RTL 공격을 하기 위해서는 공유 라이브러리에서 사용하려는 함수의 주소를 알아야합니다. 이러한 주...