上一页 1 ··· 3 4 5 6 7 8 9 下一页
摘要: 比如说 把puts(str)的.got.plt的地址的值改为system函数地址 格式化字符串的综合利用 可以使用任意地址读取,获取当前函数的实际地址,从而可以获得libc的基地址 利用libc基地址+偏移地址 可以知道其他函数地址 利用任意地址写入,从而配合got hijacking更改已有函数地 阅读全文
posted @ 2018-03-08 21:58 歇马 阅读(624) 评论(0) 推荐(0) 编辑
摘要: printf(“%s %d %x”,str,n,addr) 格式化字符串漏洞 错误的使用方式,直接将使用者的输入作为fmt使用 printf(str) 使用%x会造成栈上的信息泄露 可以使用 $ 来控制leak的位置 Use fmt: 读的话,我们可以读cancary 可以读实际地址 计算libc的 阅读全文
posted @ 2018-03-08 21:24 歇马 阅读(1094) 评论(0) 推荐(0) 编辑
摘要: pwn1针对Alarm clock进行处理修改程序的16进制数值 Hook函数 将alarm函数替换掉在linux下使用命令 sed -i s/alarm/isnan/g ./pwn1 检查保护机制checksec --file ./pwn1NX 数据保护权限 可写的不可执行查看编译file ./pwn1./pwn1: ELF 32-bit LSB executable, Intel 80386... 阅读全文
posted @ 2018-03-07 12:10 歇马 阅读(359) 评论(0) 推荐(0) 编辑
摘要: Stack Migration 栈转移 没有直接打印函数的实际地址,就自己调用puts函数。给puts函数对应的地址,可以将地址的值打印出来 函数解释 p32()主要是对整数进行打包,就是转换成二进制的形式,比如转换成地址。p32、p64是打包,u32、u64是解包。 反弹shell r.send( 阅读全文
posted @ 2018-03-06 00:29 歇马 阅读(680) 评论(0) 推荐(0) 编辑
摘要: 1.call 这个命令是访问子程序的一个汇编基本指令。也许你说,这个我早就知道了!别急请继续看完。 call真正的意义是什么呢?我们可以这样来理解:1.向堆栈中压入下一行程序的地址;2.JMP到call的子程序地址处。例如: 00401029 . E8 DA240A00 call 004A3508 阅读全文
posted @ 2018-03-05 21:30 歇马 阅读(471) 评论(0) 推荐(0) 编辑
摘要: Context context(arch = 'i386', os = 'linux',log_level='debug') 设置目标机的信息 arch设置架构为amd64,可以简单的认为设置为64位的模式,对应的32位模式是’i386’ log_level设置日志输出的等级为debug,这句话在调 阅读全文
posted @ 2018-03-05 15:02 歇马 阅读(588) 评论(0) 推荐(0) 编辑
摘要: 如果不是静态编译,通常不会有int 0x80。意思就是,没有int 0x80 构造的堆栈再好,也无法运行 动态编译会载入整个shared library stack overflow时可以直接构造function调用函数 有了函数地址,就可以直接拿来调用 Address = base + offse 阅读全文
posted @ 2018-03-03 23:31 歇马 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 使用qira时报错 qira -s ./file /root/qira-1.2/middleware/qira_webserver.py:41: ExtDeprecationWarning: Importing flask.ext.socketio is deprecated, use flask_ 阅读全文
posted @ 2018-03-03 15:27 歇马 阅读(438) 评论(0) 推荐(0) 编辑
摘要: Protection ASLR DEP PIE StackGuard ASLR DEP PIE StackGuard ASLR 地址随机化 Address Space Layout Randomization,程序每次执行时,stack、heap、library的位置都不一样 $:ldd /bin/ 阅读全文
posted @ 2018-02-23 21:47 歇马 阅读(920) 评论(0) 推荐(0) 编辑
摘要: Buffer Overflow因为程序本身没有正确检查输入数据的大小,造成攻击者可以输入比buffer还要大的数据,使得超出部分覆盖程序的其他部分,影响程序执行。Stack Overflow 利用方式简单,可以直接覆盖return address和控制参数Vunlnerable FunctiongetsscanfstrcpysprintfmemcpystrcatReturn to Text控制程序... 阅读全文
posted @ 2018-02-22 22:28 歇马 阅读(431) 评论(0) 推荐(0) 编辑
摘要: From Codes to Executables 编译 gcc file.c-o exe_file –m32生成可执行文件 objdump –d –M intel file //-d 反汇编 这两条必备 函数的返回结果放在eax中,相当于return 0; 804841f: 68 c0 84 04 阅读全文
posted @ 2018-02-19 16:19 歇马 阅读(138) 评论(0) 推荐(0) 编辑
摘要: main(){F1(arg1,arg2)…printf(); //这个printf 的地址就称为返回地址 return address}push arg2push arg1call F1在执行F1函数之前,首先要将返回地址入栈,然后进入函数。mov esp,ebppop ebpret非常关键的一张图 溢出后向下覆盖,覆盖返回地址ret addr函数执行完 EBP和ESP相等mov esp,ebp... 阅读全文
posted @ 2018-02-18 23:01 歇马 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 2018-02-18 15:44:34 Open Write Read open函数 阅读全文
posted @ 2018-02-18 15:57 歇马 阅读(586) 评论(0) 推荐(0) 编辑
摘要: 2018-02-17 18:50:11 ESP 栈顶指针 EBP 栈底指针 int a=0 #初始化全局变量 存放在data段中 #最常见的写法 保证ebx中字符串最后一位是0 xor ecx,ecx #实现对ecx的间接赋值为0 objcopy -O binary a.o code #把生成的二进 阅读全文
posted @ 2018-02-17 19:50 歇马 阅读(267) 评论(0) 推荐(0) 编辑
摘要: PWN入门使用 2018-02-16 16:10:23 GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 敲gdb进入gdb-peda file pwn1 #选择加载的文件 gdb -q # -q 静默模式 gdb: r(run ) #执行 阅读全文
posted @ 2018-02-16 23:37 歇马 阅读(2534) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 下一页