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
- c++
- Javascript
- lob
- 자료구조 복습
- CSS
- Sookmyung Information Security Study
- 숙명여자대학교 정보보안 동아리
- WarGame
- The Loard of BOF
- siss
- 숙명여자대학교 정보보안동아리
- C언어
- Python
- 풀이
- HTML
- 파이썬
- PHP 웹페이지 만들기
- 머신러닝
- 웹페이지 만들기
- XSS Game
- 백준
- hackerrank
- BOJ Python
- 생활코딩
- BOJ
- 드림핵
- SWEA
- hackctf
Archives
- Today
- Total
혜랑's STORY
[HackCTF] Basic_BOF #1 본문
# IDA를 사용하여 bof_basic 살펴보기
- s의 크기는 0x34(52) byte 라는 것을 알 수 있다.
- fgets() 함수의 길이 제한 없이 입력 받는다는 취약점을 이용하여 v5의 값을 "-559038737"로 바꿔주면 shell이 실행되는 것 같다.
# buf의 시작 주소 알아내기
- fgets()를 호출하고 난 다음에 bp를 걸면 buf의 위치를 알 수 있다.
- [ebp-0xc](v5)가 0xdeadbeef여야 원하는 값을 볼 수 있다.
실행 해보자.
- 앞에서 'A'를 넣어주었기 때문에 41이 등장하는 부분이 buf의 시작 주소라는 것을 알 수 있다.
- v5가 0x04030201가 출력되었고, 'A'를 넣어서 buf의 위치를 확인할 때도 뒤에 0x04030201이 들어있었다. 따라서 버퍼오버플로우를 일으켜 그 부분을 바꿔주면 될 것 같다.
- 'A'가 시작한 곳의 위치는 0xffffcfd4이고, '0x04030201'이 들어있는 위치까지의 거리는 40이다.
#Payload
앞에서 확인한 내용을 바탕으로 아래와 같이 Exploit code를 작성할 수 있다.
from pwn import *
p = remote('ctf.j0n9hyun.xyz', 3000)
payload = 'A'*40 + p32(0xdeadbeef)
p.sendline(payload)
p.interactive()
#Exploit
해당 Exploit code를 실행하여 flag 획득
성공!
'2021 SISS 21기 활동 > 1학기 시스템' 카테고리의 다른 글
[Hack CTF] RTL_World (0) | 2021.05.14 |
---|---|
[HackCTF] x64 Buffer Overflow (0) | 2021.04.09 |
[HackCTF] 내 버퍼가 흘러넘친다!!! (0) | 2021.04.02 |
[TAMU CTF 2018] pwn3 (0) | 2021.03.31 |
[HITCON-Training] lab3 - ret2sc (0) | 2021.03.30 |