linux pwn
轩渊
这个作者很懒,什么都没留下…
展开
-
系统调用号查看
ubuntu16.04环境下/usr/include/x86_64-linux-gnu/asmint 0x80的系统调用号在这里可以发现有32位与64位的区分unistd_32.hunistd_64.h看别人的博客是在/usr/include/asm/unistd.h目录,可能不同的系统不一样,可以在/usr/include/找一下https://blog.csdn.net/qq_29343201/article/details/52209588...原创 2020-11-13 12:26:32 · 1339 阅读 · 0 评论 -
pwn 获取函数/字符串相对偏移
readelf -s file获取程序的函数,变量相对偏移readelf -s /lib/x86_64-linux-gnu/libc.so.6 |grep "system@@GLIBC_2.2.5"查看system函数相对库的偏移readelf -S file程序段表-s 程序符号表-S 段表-h 文件头显示ELF文件头-l 程序标题显示程序标题-e 相当于:-h-l-S-t 段表细节--dyn-syms 显示动态符号表-n 显示内核注释-r 显示原创 2020-11-10 21:30:14 · 561 阅读 · 0 评论 -
栈迁移
leave ret原理一次leave将 rsp指向 原rbp+8 , rbp指向原rbp 的内容,move rsp rbp (rbp的地址赋值给rsp的地址,即rsp指向rbp)pop rbp (rbp指向rsp的内容(rbp的内容),rsp+=8)一次retrip指向原rsp的内容,rsp+=8pop rip一次leave ret使rbp指向原rbp的内容,rsp指向 原rbp+16,rip指向原rbp+8两次leave ret原创 2020-10-13 20:15:57 · 604 阅读 · 0 评论 -
三种链接库
linux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名。https://zhuanlan.zhihu.com/p/59590848[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KlFoRCey-1602591295163)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20200822115046606.png)]linux-vdso.so.1VDSO(Virtua原创 2020-10-13 20:15:00 · 220 阅读 · 0 评论 -
ret0x80
系统调用是计算机程序请求操作系统内核服务的方式,包括硬件相关的服务(例如访问硬盘驱动器)、创建和执行新的进程和进程调度等等。系统调用提供了进程和操作系统间的必要接口。Linux实现系统调用的基本过程是:应用程序准备参数,发出调用请求;C库封装函数引导。执行系统调用。前两步在用户态工作,陷入后在内核态工作。系统调用处理程序根据系统调用号,按系统调用表中的偏移地址跳转,调用对应的内核函数;系统调用完成相应功能,将返回值存入 eax ,返回到中断处理函数;系统调用返回。内核函数处理完毕后,库函数.原创 2020-10-13 20:14:37 · 250 阅读 · 0 评论 -
int指令
ret指令用栈中的数据,修改IP的值,从而实现栈转移。CPU执行ret指令时,进行下面两步操作:(IP)=((SS)*16+(SP))(SP)=(SP)+2;等效于pop ip另一种用法 ret n (n为整数)等效于(IP)=((SS)*16+(SP))(SP)=(SP)+2;(SP)=(SP)+n;例如ret 4pop ipadd sp,4...原创 2020-10-13 20:13:34 · 579 阅读 · 0 评论 -
64位栈溢出
64位程序栈溢出当参数少于7个时, 参数<1-6>放入寄存器: rdi, rsi, rdx, rcx, r8, r9栈 High Address | | +-----------------+ | 第7参数(如果有) | +-----------------+ | return address | +-------原创 2020-10-13 20:12:55 · 790 阅读 · 0 评论 -
32位栈溢出exp
32位程序栈传参栈结构 High Address | | +-----------------+ | args | +-----------------+ | return address | +-----------------+ ebp原创 2020-10-13 20:12:17 · 557 阅读 · 0 评论 -
ubuntu中pwn题的搭建
使用socat本地搭建测试 sudo apt-get install socat socat tcp-l:端口号,fork exec:程序位置,reuseaddr如: 终端输入 socat tcp-l:6666,fork exec:./文件名,reuseaddr 另一终端 nc 0.0.0.0 6666 测试服务器搭建登录到远程服务器 ssh root...原创 2020-02-19 21:26:50 · 669 阅读 · 0 评论 -
linux elf保护机制
关闭开启保护命令参数PIE保护//(默认不开启 以下都为ubuntu16.04测试) -fno-stack-protector (不开启) -no-pie / -pie (关闭 / 开启) canary保护//(默认不开启) -fno-stack-protector /-fstack-protector / -fstack-protector-all (关闭 / 开启 ...原创 2020-01-27 15:12:38 · 1440 阅读 · 0 评论 -
通用gadget详解
gadget利用gadget是做pwn题时控制程序流程一种重要且常用的方法。rop是什么?参考链接https://ctf-wiki.github.io/ctf-wiki/pwn/linux/stackoverflow/basic-rop-zh/我今天主要写我对通用gadget的原理的理解通用 gadget通用gadget之所以叫通用,说明这是可以广泛使用的。本人理解: 程序编译...原创 2019-12-26 10:52:55 · 7330 阅读 · 0 评论