nxtest
1
2
3
4
| print main\_arena // main\_arena 구조체를 정리해서 출력.
patch 0x555555757000 "/bin/sh" // set 대체. hex나 dex를 입력해도 잘 동작.
dumpargs -- Display arguments passed to a function when stopped at a call instruction
strings
|
1
2
3
| find "/bin/sh" libc
find 0xdeadbeef all
find "..\x04\x08" 0x08048000 0x08049000
|
바이너리 정보 출력
1
2
3
4
5
6
| info shared
info auxv
vmmap [binary || libc || stack || all || ...] // procfs
elfsymbol [func] // func@plt, func@got 주소.
readelf // section header.
procinfo // fd와 socket이 어디와 연결되어 있는지.
|
python code 실행
1
2
3
4
5
6
| gdb-peda$ python
>print("123")
>peda.execute(“continue”)
>end
123
gdb-peda$ pyhelp peda
|
ropgadget
ropgadget/ropsearch
가 제대로 동작하지 않을 수 있기 때문에, 안나오면 find
로도 검색해봐야 한다.
1
2
3
4
| ropgadget // 자주쓰는 pop-pop-ret gadget 등
ropsearch ["add esp,?"] [range] // instruction을 포함한 gadget을 찾아준다.
ropsearch "syscall; ret" // 띄어쓰기 해야함.
jmpcall [eax] [range]
|
shellcode
1
2
| shellcode // 이것만 입력하면 Usage가 출력되니 참고.
shellcode generate x86/linux exec
|
pattern
1
2
| pattern create 100
pattern\_search
|
snapshot
snapshot이 아주 유용한게, 실행중인 프로세스에 attach하고 snapshot 찍어놓고 되돌리면서 하면 실제 런타임에 메모리가 어떻게 되는지 알 수 있다.
1
2
3
4
| snapshot save [file\_name]
snapshot restore [file\_name]
session save [file\_name] // bp, watch point만 저장
session restore [file\_name]
|
etc key feature
1
2
3
4
5
6
7
8
9
|
aslr -- Show/set ASLR setting of GDB
lookup -- Search for all addresses/references to addresses which belong to a memory range
skeleton -- Generate python exploit code template
xormem -- XOR a memory region with a key
pshow -- show options
pset option clearscr off
|
Install
https://github.com/longld/peda
peda를 다운로드 받고 압축을 해제한 다음, peda를 사용할 사용자의 $HOME
디렉토리에 ` .gdbinit`파일을 다음과 같이 작성한다.
1
| echo "source ($peda\_install\_path)/peda.py" >> .gdbinit
|
Exception이 발생하는 경우
1
| (gdb) python print(sys.version)
|
출력되는 버전이 3.x이라면, peda는 python 2.x를 기반으로 동작하기 때문에 peda를 설치해도 Exception
이 발생한다. 해서, gdb를 python 2.x로 새로 컴파일 해야 한다.
#1 gdb 삭제하고 필요한 라이브러리 설치
1
2
3
4
| sudo apt-get remove gdb
sudo apt-get install python2.7-dev
sudo apt-get install libcurses5-dev
sudo apt-get install texinfo
|
#2 http://ftp.gnu.org/gnu/gdb/에서 gdb를 다운로드 받고 압축 해제
1
| wget http://ftp.gnu.org/gnu/gdb/gdb-8.0.tar.gz
|
#3 python2를 사용하도록 install
1
2
3
4
| ./configure --with-python=python2
make
sudo make install
mv ./gdb/gdb /usr/bin/gdb
|