함수의 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에 ..
/bin/sh 문자열 주소 찾는 방법.
·
Tips & theory
사실 /bin/sh 문자열만 찾는 것은 아니며 이를 활용해서 여러 함수의 주소를 찾을 수 있다. gdb에서 찾기. 보통 system 함수와 함께 쓰이므로 아래와 같이 찾을 수 있다. gef➤ find &system,+999999999,"/bin/sh" 0xb7f8ad4c warning: Unable to access 16000 bytes of target memory at 0xb7fd8f54, halting search. 1 pattern found. gef➤ x/s 0xb7f8ad4c 0xb7f8ad4c: "/bin/sh" 또는 gef 같은 경우 grep 명령어로 찾을 수 있다. gef➤ grep /bin/sh [+] Searching '/bin/sh' in memory [+] In '/usr/lib/..