엄범


nxtest

```bash

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

```

```bash

find "/bin/sh" libc

find 0xdeadbeef all

find "..\x04\x08" 0x08048000 0x08049000

```

바이너리 정보 출력

```bash

info shared

info auxv

vmmap [binary || libc || stack || all || ...]    // procfs

elfsymbol [func]                             // func@plt, func@got 주소.

readelf                                // section header.

procinfo                                         // fd와 socket이 어디와 연결되어 있는지.

```

python code 실행

```bash
gdb-peda$ python
>print("123")
>peda.execute(“continue”)
>end
123
gdb-peda$ pyhelp peda
```

ropgadget

`` ropgadget/ropsearch``가 제대로 동작하지 않을 수 있기 때문에, 안나오면 `` find``로도 검색해봐야 한다.
```bash
ropgadget                // 자주쓰는 pop-pop-ret gadget 등
ropsearch ["add esp,?"] [range]    // instruction을 포함한 gadget을 찾아준다.
ropsearch "syscall; ret"    // 띄어쓰기 해야함.
jmpcall [eax] [range]
```

shellcode

```bash
shellcode    // 이것만 입력하면 Usage가 출력되니 참고.
shellcode generate x86/linux exec
```

pattern

```bash
pattern create 100
pattern_search
```

snapshot

snapshot이 아주 유용한게, 실행중인 프로세스에 attach하고 snapshot 찍어놓고 되돌리면서 하면 실제 런타임에 메모리가 어떻게 되는지 알 수 있다.

```bash

snapshot save [file_name]

snapshot restore [file_name]

session save [file_name]      // bp, watch point만 저장

session restore [file_name]

```

etc key feature

```
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

peda를 다운로드 받고 압축을 해제한 다음,
peda를 사용할 사용자의 ``bash $HOME`` 디렉토리에 `` .gdbinit``파일을 다음과 같이 작성한다.
```bash
echo "source ($peda_install_path)/peda.py" >> .gdbinit
```

Exception이 발생하는 경우

```bash
(gdb) python print(sys.version)
```
출력되는 버전이 3.x이라면, peda는 python 2.x를 기반으로 동작하기 때문에 peda를 설치해도 `` Exception``이 발생한다. 
해서, gdb를 python 2.x로 새로 컴파일 해야 한다.

#1 gdb 삭제하고 필요한 라이브러리 설치

```bash
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를 다운로드 받고 압축 해제

```bash
wget http://ftp.gnu.org/gnu/gdb/gdb-8.0.tar.gz
```

#3 python2를 사용하도록 install

```bash
./configure --with-python=python2
make
sudo make install

mv ./gdb/gdb /usr/bin/gdb
```


'Security > Reversing & Dbg' 카테고리의 다른 글

[Windows] injection & hooking  (0) 2017.08.07
[Linux] injection  (0) 2017.08.07
gdb peda / gdb-multiarch  (0) 2017.07.13
gdb  (0) 2017.07.12
LD_PRELOAD를 이용한 so injection과 hooking. + wrapping function  (2) 2016.12.19
ptrace - Linux injection ( code injection / so injection )  (0) 2016.12.12