포너블을 할 때 로컬에서 사용하는 lib랑 서버에서 사용하는 lib가 다를 때가 있다
이럴 때, 아무 함수나 주소를 구할 수 있다면
libc database search
Query show all libs / start over
libc.blukat.me
여기에 왼쪽에는 함수 이름, 왼쪽에는 하위 1.5바이트(끝 세자리)를 쓰면 무슨 lib를 사용하는지 알려준다
여기 말고도 여기
이것 말고 함수를 구하는 방법이 있는데
https://github.com/niklasb/libc-database
GitHub - niklasb/libc-database: Build a database of libc offsets to simplify exploitation
Build a database of libc offsets to simplify exploitation - GitHub - niklasb/libc-database: Build a database of libc offsets to simplify exploitation
github.com
여기 가서 다운 받고 압축 푼 후
./get <원하는 옵션>으로 db를 구축하고, (필자는 시간이 오래 걸려도 ./get all로 다 다운받았다)
그 후
./find (함수의 이름) (끝 세자리수)
를 입력하면 라이브러리를 알려준다
그 다음 offset을 구하는 방법은
첫 번째,
./dump <알아낸 라이브러리 버전> <함수이름>
를 입력해서 바로 offset을 구할 수 있다
두 번째,
위 라이브러리를 구하는 두번째 방법을 사용했으면 db가 있겠고 그곳에 있는 lib를 pwntool로 ELF해줘서 사용하면 된다
ex) libc = ELF("./lib/블라블라")
ex) read_offset = libc.symbols["read"]
'포너블(pwn)' 카테고리의 다른 글
펌) One Gadget 설치 및 사용법 (0) | 2022.03.07 |
---|---|
rtl x86, rop x86 (0) | 2022.02.25 |
리눅스) 라이브러리 검색 (0) | 2022.02.23 |
RTL ret가젯은 언제 넣어줘야하나? (0) | 2022.02.19 |
python2&3 pwntools설치 (0) | 2022.02.17 |