CTF

remote("ip", port)
process("./bin",env={"LD_PRELOAD":"./libc2.23.so"})
EFL("./bin")
efl.bss()

context.log_level='DEBUG'
gdb.attach(p)

send(payload)   发送payload
sendline(payload)   发送payload,并进行换行(末尾
)
sendafter(some_string, payload)   接收到 some_string 后, 发送你的 payload

recv(numb = 2048, timeout = dufault)   接受数据,numb指定接收的字节,timeout指定超时
recvline(keepends=True)    接受一行数据,keepends为是否保留行尾的

recvuntil("Hello,World
",drop=fasle)    接受数据直到我们设置的标志出现
recvall()    一直接收直到EOF
recvrepeat(timeout = default)    持续接受直到EOF或timeout

symbols['a_function']   找到 a_function 的地址
got['a_function']   找到 a_function的 got
plt['a_function']   找到 a_function 的 plt
next(e.search("/bin/sh"))   找到包含 some_characters(字符串,汇编代码或者某个数值)的地址.

libc=LibcSearcher("func",func_addr)  根据func查找libc版本
Libc.dump("func")  在libc中找到func的地址

p32()/u32()
p64()/u64()
str.ljust(width, ‘char’)#左对齐

asm(shellcraft.sh())  shellcode

int(xxx,base=10)  将xxx转换为10进制

interactive()

 

 export LD_PRELOAD="./so"
unset LD_PRELOAD

原文地址:https://www.cnblogs.com/0xHack/p/10741351.html