- [ 보안(해킹) 공부🏳️/포너블 ]🏆Dreamhack - Return Address Overwrite 문제풀이2024-11-22 21:06:43Return Address Overwrite란 공격자가 버퍼에 초과된 크기 데이터를 작성해 버퍼 오버플로우를 일으켰을 때, 스택의 구조를 분석해 리턴 주소를 덮어씌웠을 경우 프로그램의 제어 흐름을 탈취할 수 있는 방식으로 이루어진다. void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0);}setvbuf 함수 안의 stdin, stdout이 나타난다.stdin은 표준 입력을 나타내고, stdout는 표준 출력을 나타낸다.(stdxxx, 0, 2, 0)에서 숫자는 순서대로 (stdxxx, `커스텀 버퍼 사용 x`, `unbuffered mode`, `버퍼 크기 설정 x) 를 나타낸다. 0x400667 : push rbp 0..
- [ 보안(해킹) 공부🏳️/포너블 ]🏅Dreamhack - memory_leakage 문제풀이2024-11-18 01:07:03코드#include #include #include #include #include FILE *fp;struct my_page { char name[16]; int age;};void alarm_handler() { puts("TIME OUT"); exit(-1);}void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30);}int main(){ struct my_page my_page; char flag_buf[56]; int idx; memset(flag_buf, 0, sizeof(flag_buf))..
- [ 보안(해킹) 공부🏳️/포너블 ]🏅Dreamhack - out_of_bound 문제 풀이2024-11-13 23:54:35🏅Dreamhack - out_of_bound 프로젝트를 하다가 OOB 에러를 발견한 적이 있었는데 드림핵에 이런 문제가 있어서 풀어보기로 했다. 일단 서비스의 바이너리와 소스코드가 주어졌다고 하니 범위를 벗어난 취약점은 보통 코드를 잘 살펴보면 있는 것 같아서 일단 소스코드를 살펴보자. #include #include #include #include #include char name[16];char *command[10] = { "cat", "ls", "id", "ps", "file ./oob" };void alarm_handler(){ puts("TIME OUT"); exit(-1);}void initialize(){ setvbuf(stdin, NULL, ..