이번에 풀어볼 문제는 https://ctf.j0n9hyun.xyz/ 에 Pwnable 문제인 Gift문제이다.

보호 기법은 NX-bit가 적용되어 있다.

파일을 실행해 보면 위와 같이 입력을 2번 받는다.

ida로 main을 분석해 보면
- binsh과 system변수의 주소 값이 출력
- fgets로 s변수에 128bytes까지 표준입력을 받음
- printf함수로 s변수 출력(%c, %d와 같은 포맷 지정자 지정이 없으므로 FSB취약점 존재)
- gets함수로 표준 입력을 받음(bof취약점 존재)
이 파일을 실행 시킬때 마다 system의 주소값이 변경되는 것으로 보아 ASLR이 적용되어 있고 ASLR과 NX-bit를 우회 할 수 있는 ROP기법을 이용해 exploit 하는 문제 같다.

payload는 다음과 같다

gadget
A를 88번 채운 후 pop ret 의 가젯의 주소는 0x80483ad를 사용했고 gets함수를 호출해 pr(pop ret)을 이용해 binsh_address를 호출 하고 system_address 함수를 이용해 binsh를 gets함수의 bof를 일으킨다.
***가젯 명령어 ROPgadget --binary gift | grep pop

다음과 같이 flag를 얻었다.
문제를 풀고 난 다음 살펴보니까 Received 0x4 bytes라는 문장으로 보아 p.sendline으로 aaa와 같이 3byte를 보내는 것이 아니라 4byte를 보내야 했던 것 같다.
'Security > Pwnable' 카테고리의 다른 글
| [Pwnable] dreamhack Basic_BOF #2 문제 풀이 (0) | 2022.04.21 |
|---|---|
| [Pwnable] dreamhack basic_exploitation_000 문제 풀이 (0) | 2022.04.21 |
| [Pwnable] HackCTF ROP 문제 풀이 (1) | 2021.01.20 |
| [Pwnable] HackCTF Poet 문제 풀이 (0) | 2021.01.20 |
| Dreamhack-Memory Corruption - C(1) (0) | 2021.01.20 |