일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 웹해킹
- 보안
- 포렌식
- 프로그래밍
- 코드게이트
- 네퓨즈
- xcz
- 정보보안
- WarGame
- hacking
- webhacking
- kangsecu
- 버그바운티
- 자료구조
- Pwnable
- wargame.kr
- 버그헌팅
- 선린인터넷고등학교
- 해킹
- 포너블
- DVP
- C언어
- 정보보호
- 문제풀이
- 블록체인
- 워게임
- webhacking.kr
- nefus
- CTF
- 시스템
- Today
- Total
kangsecu's B1og
[HackCTF]Pwnable - third line 본문
1. bof_pie
binary :
main은 볼게 없다. 들어가자마자 welcome이 실행됨
welcome :
j0n9hyun :
대충 페이로드가 생각이났다. 근데 PIE가 걸려있어서 base주소로 할 수가없다. 그러므로 welcome_addr에서 welcome_offset을 빼서 base_addr을 구하고 거기에 j0n9hynun_offset을 더해서 j0n9hyun을 실행시킬 것이다.
exploit :
2. yes or no
binary :
3. RTL_world
binary :
NX가 있으니가,, RTL 을 하자 > 그냥 문제 이름도 RTL이다.
main :
이 부분에서 bof가 발생하고 우린 여기서 rtl을 해주면 된다.
exploit :
바이너리를 확인해서 dummy(144) + sys_addr + dummy(4) + sh_addr로 페이로드를 구성했다.
p.s 이외에도 코스에서 돈을 벌어서 shell sword를 구입하면 주소를 던져주는데 이건 libc에 /bin/sh주소니까 딱히 신경 안써도 될 것 같다. 그리고 나는 문제를 풀 때 도커환경에서 gef를 사용하는데 원래는 페다에서 start > find "/bin/sh" 했던게 gef에서는 start > grep "/bin/sh"을 해서 주소를 찾아야한다. 그리고 sys_addr은 그냥 info func에서 system@plt주소로 찾았다.
4. g++ pwn
binary :
vuln.c :
get_flag.c :
exploit :
우리는 dummy(60)+sfp(4) 총 64개를 채우고 ret에 get_flag를 넣어야하는데 위에 vuln.c를 보면 32개 밖에 입력을 못받는다.
그래서 I가 You로 치환되는걸 이용하여 I를 21개 > You 63개 + A해서 64개를 맞춰주고 뒤에 flag_addr을 넣었다.
'System > wargame' 카테고리의 다른 글
[HackCTF]Pwnable - fourth line (0) | 2020.03.09 |
---|---|
[HackCTF]Pwnable - second line (0) | 2020.02.23 |
[HackCTF]Pwnable - first line (0) | 2020.02.23 |