Tips & theory
문제에서 제공된 libc 파일 사용.
offset을 찾는 것은 아래 링크 참조. https://wyv3rn.tistory.com/64 libc에서 offset 찾기. pwnable 문제를 풀다보면 libc 파일을 제공해주는 경우가 다수 있다. 하지만 offset을 구할때 자꾸 헷갈리는 부분이 있어 다시 정리한다. pwntools로 찾기 해당 파일의 libc 버전 또는 경로를 확인해서 ┌ wyv3rn.tistory.com 문제에서 libc 파일을 제공할 때, 프로그램 실행 시 해당 libc 파일을 로드해주지 않으면 본인 컴퓨터의 libc를 사용하기 때문에 공격 대상 환경과 달라 offset이 차이가 난다. 예를 들면 아래와 같이 libc-2.27.so 파일이 제공되었지만 실제로는 다른 파일을 사용하는 것을 볼 수 있다. ┌──(kali㉿kal..

/bin/sh 문자열 주소 찾는 방법.
사실 /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/..
Python 3 + pwntools 자주 하는 실수
변수의 타입을 확실하게 구분하며 출력함에 따라 자꾸 헷갈린다 ㅠㅠ 자주 하는 실수를 정리했다. ssh 서버에 접속해서 특정 파일을 실행할 때 s = ssh(user='app-systeme-ch83',host='challenge03.root-me.org',port=2223,password='app-systeme-ch83') p=s.process('./ch83') 이와 같이 선언하였을 때 서버에서 값을 받아오는지, 프로그램에서 받아오는지 확실히 해야 한다. p.recv(12) #프로그램에서 문자를 받아올때 s.recv(12) #서버에서 문자를 받아올때 변수를 선언할 때는 확실하게 선언할 것. 보통은 byte로 값을 처리하기 때문에 payload = b'' payload += b '\x90'*100 와 같이 ..

Kali linux setup
usb로 노트북에 설치하려고 했는데... usb가 문제인지 노트북이 문제인지 인식, 설치가 안된다. 차선책으로 vmware로 구동하기로 함. 바로 구동되도록 공식 홈페이지에서 파일 링크를 제공하기 때문에 다운로드하여서 그냥 vmware로 실행만 해주었다. (2022년 2월 버전 사용) 32bit, 64bit 모두 필요할 것으로 생각되어 함께 세팅. 구동해보니 이런저런 hacking tool이 설치되어 있다고는 하는데 내가 원하는 것들은 설치가 안되어있다. 개인적으로 gdb를 가장 많이 사용하는데, 진짜 없는 건지 내가 못 찾는 건지... 그래서 아래 명령어를 통해 기본 환경은 구성해 주었다. 32bit, 64bit 명령어는 동일. sudo apt-get update sudo apt-get install ..