함수의 offset은 왜 strings로 찾아지지 않는가?
·
Tips & theory
공부 초기에 offset을 찾는 방법이 너무 헷갈렸다. 왜 /bin/sh 문자열의 offset은 strings -tx filename | grep /bin/sh 로 찾아지고 system 함수는 strings -tx filename | grep system 으로 찾아지긴 하지만 실제 offset과 왜 다른가? 요약하자면 그 이유는 "함수명"은 함수 초기에 무조건 나오는 것이 아니기 때문이다. strings 명령어는 말 그대로 파일 내에 string을 찾아 출력해준다. 그 말인 즉슨, 파일 내에는 hex 값으로된 수 많은 데이터들이 있다. 이 값들 중 string으로 저장된 값들만 출력해주는 역할을 한다. 예를 들어보자. /bin/sh는 파일 내에 문자열로 들어있을 것 같지만 실제로는 ascii code에 ..
libc에서 offset 찾기.
·
Tips & theory
pwnable 문제를 풀다보면 libc 파일을 제공해주는 경우가 다수 있다. 하지만 offset을 구할때 자꾸 헷갈리는 부분이 있어 다시 정리한다. pwntools로 찾기 해당 파일의 libc 버전 또는 경로를 확인해서 ┌──(kali㉿kali)-[~/Downloads/1279bf21-e0f3-46a4-b577-3c3955c458fb] └─$ ldd oneshot linux-vdso.so.1 (0x00007ffc07293000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f361f1f0000) /lib64/ld-linux-x86-64.so.2 (0x00007f361f5e1000) 간단한 파이썬 코딩으로 libc 파일의 offset 확인. from pwn..