Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 백준
- C언어
- HTML
- 자료구조 복습
- BOJ
- 기계학습
- BOJ Python
- Python
- WarGame
- siss
- 드림핵
- c++
- lob
- 풀이
- hackerrank
- 숙명여자대학교 정보보안 동아리
- The Loard of BOF
- hackctf
- CSS
- Javascript
- 웹페이지 만들기
- Sookmyung Information Security Study
- 파이썬
- PHP 웹페이지 만들기
- XSS Game
- 생활코딩
- 머신러닝
- c
- 숙명여자대학교 정보보안동아리
- SWEA
Archives
- Today
- Total
혜랑's STORY
[HackCTF] Random key 풀이 본문
checksec
64 bit 바이너리 파일이고, NX가 걸려있다.
IDA
- rand() 함수가 사용되어 v5값이 실행될 때마다 바뀌는 것 같다.
- 그런데 아래 if문을 보면 v5와 v4값이 같아야 flag를 출력할 수 있다.
- 즉, 랜덤으로 생성되어 v5에 저장될 때 v4에도 저장되어야 할 것 같다.
Exploit method
- rand() 함수의 값과 같은 값을 입력하는 방법을 검색해 보았더니, 동적라이브러리로 rand함수와 똑같은 코드를 작성하고 .so 파일을 만들어서 import 시키면 같은 값을 가져올 수 있다고 한다.
time.c 코드 작성
gcc -shared -o time.so -fPIC time.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int solve();
int solve(){
srand(time(NULL));
int solve = rand();
return solve;
}
- .so 파일을 추가할 때 ctypes 모듈이 필요하다고 한다.
Code
from pwn import *
from ctypes import *
p = remote('ctf.j0n9hyun.xyz', 3014)
so = CDLL('./time.so')
random_key = so.solve()
p.recvuntil(" : ")
p.sendline(str(random_key))
p.interactive()
'2021 SISS 21기 활동 > 여름방학 System' 카테고리의 다른 글
[pwnable.xyz] add (0) | 2021.08.07 |
---|---|
[pwnable.xyz] sub (1) | 2021.08.06 |
[HackCTF] RTC 풀이 (0) | 2021.07.31 |
baby1 풀이 (0) | 2021.07.24 |
[Lazenca] Return-to-csu(feat.Return-to-vuln, Just-In-Time Code Reuse) - x64 (0) | 2021.07.23 |