Information Security

[Dreamhack] basic_rop_x86 본문

INTERLUDE/System Hacking

[Dreamhack] basic_rop_x86

sohexz 2022. 11. 17. 21:13

https://dreamhack.io/wargame/challenges/30/

 

basic_rop_x86

Description 이 문제는 서버에서 작동하고 있는 서비스(basicropx86)의 바이너리와 소스 코드가 주어집니다. Return Oriented Programming 공격 기법을 통해 셸을 획득한 후, "flag" 파일을 읽으세요. "flag" 파일의

dreamhack.io

문제 파일을 확인해보자

<basic_rop_x86.c>

#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);
}

int main(int argc, char *argv[]) {
    char buf[0x40] = {};

    initialize();

    read(0, buf, 0x400);
    write(1, buf, sizeof(buf));

    return 0;
}

buf에 0x40의 공간을 할당하고 read로 0x400바이트 만큼의 데이터를 읽어들이는 코드이다 

 

 

실행하여 어떤 기능을 하는지 살펴보자

입력을 먼저 받고 같은 문자열을 다시 출력해준다

출력해준 후 자동으로 종료된다

 

 

어셈블리어로 분석해보자

 

exploit 했을 때 계속 이렇게 나옴 ..

 

다시 도전

 

 

참고 블로그

https://kkomii22.tistory.com/83

 

ROP(Return Oriented Programming)를 이용한 시스템 해킹

이 게시글은 Protostar stack7 문제를 다룰 것이다. x86 기반의 문제 파일이 필요하다 디버깅을 해서 system()의 주소, /bin/sh의 주소를 확인한다 패턴을 이용해서 스택의 첫 요소까지의 값(패딩 값)을 확

kkomii22.tistory.com

 

'INTERLUDE > System Hacking' 카테고리의 다른 글

[Pwnable.kr] fd  (0) 2024.01.16
[Dreamhack] sint  (0) 2022.11.22
[Dreamhack] out_of_bound  (0) 2022.11.15
[Dreamhack] Return to Shellcode  (0) 2022.11.10
[Dreamhack] ssp_001  (0) 2022.11.03