write-up/pwnable
[HackCTF] Basic_BOF #2
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 |
댓글