write-up/pwnable

[HackCTF] 내 버퍼가 흘러넘친다!!!

여니두 2019. 10. 4.

32bit ELF 파일

 

setvbuf(stdout, 0, 2, 0): CTF 문제에서 볼 수 있는 사용. 버퍼를 없앤다.

 

read() 함수로 name을 50byte 읽어온다. (입력받는다.)

 

gets() 함수로 s 버퍼에 입력값을 받는다.

 

main+3> 스택에 0x14(=20byte) 공간을 할당한다.

 

main+69> [ebp-0x14] = s 버퍼 위치

 

name 버퍼는 어디있나?

name은 전역변수로 선언되어, BSS 영역에 존재하는 것을 확인할 수 있었다.

 

name은 초기화되지 않은 전역변수로 고정주소 영역을 사용한다고 한다.

 

>> 고정적인 BSS 영역인 name에 쉘코드를 넣어 RET으로 변조시키면?!

 

s[20]
SFP[4]
RET[4]

 

★ 페이로드

1) name에 SHELLCODE 주입

2) NOP[24] + SHELLCODE가 있는 name 주소

 

이번엔 평소처럼 하니 잘 되지 않아서, 익스플로잇 코드를 짜려고 한다.

exploit.py

 

제대로 짰는데... flag가 안 나온다...

'write-up > pwnable' 카테고리의 다른 글

[HackCTF] RTL_World  (0) 2019.10.05
[HackCTF] x64 Buffer Overflow  (0) 2019.10.04
[HackCTF] Basic_FSB  (0) 2019.10.04
[HackCTF] Basic_BOF #2  (0) 2019.10.04
[HackCTF] Basic_BOF #1  (0) 2019.10.04

댓글