pwn

0x1.连接

1 r = remote('目标IP或Url',端口号)
2 r = process('./文件名')
3 r = ssh(user='',address='',port=,password='')

0x2.数据交互

1 r.send(data) : 发送数据。
2 r.sendline(data) : 发送一行数据,相当于在数据末尾加\n。
3 r.interactive() : 在取得shell之后使用,直接进行交互,相当于回到shell的模式。
4 r.recv(numb=字节大小, timeout=default) : 接收指定字节数。
5 r.recvall() : 一直接收直到达到文件EOF。
6 r.recvline(keepends=True) : 接收一行,keepends为是否保留行尾的\n。
7 r.recvuntil(delims, drop=False) : 一直读到delims的pattern出现为止。
8 r.recvrepeat(timeout=default) : 持续接受直到EOF或timeout。
9 r.sendafter(some_string,data) : 接收到some_thing后发送你的playload
10 shellocode = asm(shellcraft.sh()):生成system(/bin/sh)的shellcode
11 shellcode.ljust(num,char):如果shellcode长度不够,额外空间填充’char‘
12 context(os='linux', arch='amd64', log_level='debug')

0x3.objdump

1 objdump -d -M intel 文件名 :以intel语法反汇编可执行的节

 0x4.ROPgadget

查找可存储寄存器的代码
ROPgadget --binary rop  --only 'pop|ret' | grep 'eax'
查找字符串
ROPgadget --binary rop --string "/bin/sh"
查找有int 0x80的地址
ROPgadget --binary rop  --only 'int'

 


 

通过ida的ebp定位不一定准确,这一行and指令导致ida计算ebp偏移失败
got表是存放加载后得api地址,plt是一个调用的中转。
process('./p',env={"LD_PRELOAD":"./libc_path"})在python中指定libc

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/DreamoneOnly/p/11365254.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值