write-up/pwnable

[HackCTF] Basic_BOF #2

여니두 2019. 10. 4.

32bit ELF 파일이다.

 

소스코드가 이상하게 나와서 그냥 어셈블리만 보기로 했다.

 

우선 스택에 94h(=148byte) 공간을 할당하고 있다.

 

fgets([ebp-8Ch], 85h, stdin)

>> fgets(s(140byte), 133byte, stdin)

 

s를 버퍼라고 생각한다면, 133byte까지 입력을 받을 받을 수 있기 때문에 s를 꽉 채울 수 없게 된다.

 

8byte
s[140]
SFP[4]
RET[4]

일단 s 버퍼로는 RET까지 도달할 수 없다.

 

아직 별다른 취약점이 발견되지 않아서, 함수들이 뭐가 있는지 살펴보았다. 함수 포인터를 이용하는 문제가 아닐까?

이름부터 수상한 shell 함수가 있다.

system()의 인자로 "/bin/dash"를 넘겨주고 있다.

 

그럼 저 fgets 호출 다음에 [ebp-0xc] 안의 주소를 call하는 부분을 shell 주소로 변조하면 되지 않을까?

 

s[140]에서 0xc[12]만큼 빼면 128byte

 

다음과 같은 페이로드를 생각해볼 수 있다.

 

★ 페이로드

"A"*128+shell 함수 주소

>> "A"*128+"\x9b\x84\x04\x08"

 

 

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

[HackCTF] 내 버퍼가 흘러넘친다!!!  (0) 2019.10.04
[HackCTF] Basic_FSB  (0) 2019.10.04
[HackCTF] Basic_BOF #1  (0) 2019.10.04
[pwnable.kr] cmd1  (0) 2019.09.29
[pwnable.kr] mistake  (0) 2019.09.29

댓글