PWN
文章平均质量分 73
PWN的知识分享
鹏华李
CSDN年度博客之星安全领域Top2、阿里云专家博主、华为云享专家博主,多个CNVD漏洞报送者,参与国、各地级市攻防演练红队人员,参与杭州亚运会、成都大运会等重大项目等级保护工作,XCTF Reverse排行第九名,蓝帽杯最高全国第九名
展开
-
[PWN][补充篇]pwntools的相关知识
@TOC0x0 安装sudo pip install pwntools0x1 导入包from pwn import*0x2 链接远程服务器或者链接本地文件远程r = remote(‘目的IP或目标URL’,目标端口号)本地r = process('./文件名')0x3 接收远端回传的数据interactive() //在取得shell之后使用,直接进行交互,相当于回到shell的模式recv(numb = 字节大小,timeout = default) //接收指定字节数原创 2021-03-28 19:24:34 · 1823 阅读 · 1 评论 -
[PWN][高级篇]ROP-ret2libc-32/64位实例 (共四个)
ROP-ret2libc-32实例32位思路:1、想办法调用execve("/bin/sh",null,null)2、传入字符串/bin///sh3、体统调用execveeax = 11ebx = bin sh_addrecx = 0edx = 0int 0x80实例代码如下:接下来我们检查保护我们看到是有NX保护,没有canary和pie保护,我们使用ROP进行绕过。关键在于如何获取system 和 /bin/sh。objdump -d -j .plt原创 2021-03-28 16:49:00 · 4899 阅读 · 1 评论 -
[PWN][高级篇]ROP-ret2libc基础知识
ROP-ret2libc基础知识 前提知识准备Linux延时绑定机制Linux演示绑定机制的实现延迟绑定对我们有什么意义libc函数在哪?ret2libc使用条件如何使用libcplt表和got表的关系整体的跟踪前提知识准备Linux延时绑定机制动态连接的程序调用了libc的库函数,但是libc在运行才被加载到内存中,调用libc函数时,才解析出函数在内存中的地址,为了帮助程序更好的利用内存空间,不用每次把所有的函数真实地址都写进去,用到哪个查哪个,之后在使用就会很方便。Linux演示绑定机制的实现原创 2021-03-27 18:04:03 · 2108 阅读 · 0 评论 -
[PWN][高级篇]利用ROP-ret2Syscall突破NX保护
利用ROP-ret2Syscall突破NX保护大家还记的之前说过的ret2text漏洞吗,那是利用依赖于程序中的存在,执行system(’/bin/sh’)的函数,如果没有这个函数的话,我们怎么办呢?我们使用ret2shellcode是自定义shellcode代码,但是这中方法的局限性是程序没有开启NX保护,那么如何程序开启了NX保护,这个时候我们就要使用Ret2Syscall大法了!!!!什么是ROPGadgets?是在程序中的指令片段,有时我们为了到达我们执行命令的目的,需要多个Gadget来完原创 2021-03-26 22:31:50 · 1392 阅读 · 1 评论 -
[PWN][进阶篇]ROP-Ret2Shellcode-64位实例
ROP-Ret2Shellcode-64位实例/usr/include/x86_64-linux-gnu/asm/unisted_64.h编写64位shellcode,思路和32位是一样的(1)想办法调用execve("/bin/sh",null,null)(2)借助栈来传入字符串/bin/sh(3)系统调用execverax = 0x3b(64bit)rdi = bin_sh_addrrsi = 0rdx = 0实例代码如下:setvbuf函数的作用是优化io流,在服务器上时,或原创 2021-03-24 21:56:01 · 4219 阅读 · 2 评论 -
[PWN][知识小节]shellcode生成和测试
shellcode生成和测试step1 测试shellcode的代码step2 shellcode-32.asm源码step3step4 链接生成可执行文件step5 提取code段step6 用python来给shell测试程序发送shellcodestep7 测试step1 测试shellcode的代码step2 shellcode-32.asm源码step3使用汇编器nasm把shellcode编译成.o文件step4 链接生成可执行文件step5 提取code段①原创 2021-03-24 14:41:28 · 3084 阅读 · 0 评论 -
[PWN][进阶篇]ROP_Ret2Shellcode-32实例
ROP_Ret2Shellcode-32实例一、相关知识二、实例教学一、相关知识之前我们说过ret2text漏洞是依赖于程序中存在执行 system("/bin/sh")的函数,那么如何解决ret2text的局限性ret2textshellcode没有执行shell的函数,没有开启NX保护传入自定义的shellcoderet2libc开启NX(可写的不可执行)使用libc函数,leak libc + ROP什么是shellcode?通常是开启一个shellLinux的系统调用/usr原创 2021-03-24 13:19:02 · 3196 阅读 · 0 评论 -
[PWN][进阶篇]使用GDB附加调试64位程序
使用GDB附加调试64位程序pwntools开发脚本时如何调试:1、使用proc.pidof§函数先将被测函数的PID打印出来2、 用GDB Attach上去调试即可本次实验的代码如下:原创 2021-03-22 22:17:44 · 7921 阅读 · 5 评论 -
[PWN][进阶篇]Rop-Ret2Text介绍及实例教学
Rop-Ret2Text介绍及实例教学1、前提知识2、实例教学1、前提知识什么是Rop系统攻击是一种新型的基于代码复用技术的攻击,攻击者从已有的库或可执行文件中提取指令片段,构建恶意代码。ROP也有其不同于正常程序的内在特征:(1)ROP控制流中,call和ret指令不操纵函数,而是用于将函数里面的短指令序列的执行流串起来,但在正常的程序中,call和ret分别代表函数的开始和结束;(2)ROP控制流中,jmp指令在不同的库函数甚至不同的库之间跳转,攻击者抽取的指令序列可能取自任意一个二进制文件原创 2021-03-22 14:55:24 · 6417 阅读 · 0 评论 -
[PWN][基础篇]如何利用printf漏洞突破canary保护
如何利用printf漏洞突破canary保护使用的实例代码如下为了配合本次实例的教学,大家在编译时,不加pie保护,加cannary保护,整个的流程就是,分析程序之后,编写exp,利用printf漏洞(填充func函数,使其返回地址为exploit函数)来突破canary并且覆盖ret。之后使用gdb开文件,查看func函数来自英语白痴的小tip:我们可以大概搞清楚func的流程,就是先read,然后printf,然后read,就是这样子。我们下断就下到printf这里,我输入的测试用例是原创 2021-03-21 21:46:56 · 4043 阅读 · 0 评论 -
[PWN][基础篇]格式字符串漏洞发生的条件
格式字符串漏洞发生的条件1、实验一2、实例二3、实例三本次实验3个实例1、实验一代码如下:这个实验是不存在漏洞的,重点在于理解printf函数的堆栈变化。使用GDB打开,我们先要看一下main函数,可以看到printf函数的地址是0x00001206我们在printf函数处下断点开始运行这个程序,这个单步n是不可以的,我们要先删除断点后start程序我们来看一下栈中的情况3个数,是倒序压栈的,从右到左,所以我们在先是\n,然后是e9也就是我们的233最后是hello world原创 2021-03-21 20:11:08 · 3425 阅读 · 0 评论 -
[PWN][基础篇]printf漏洞介绍
printf漏洞介绍1、概念2、漏洞成因1、概念printf接受变长的参数,其中第一个参数为格式化字符串,后面的参数在实际运行时将与格式化字符串中特定的子字符串进行对应,将格式化字符串中的特定字串,解析为相应的参与值。格式化字符串就是%这种。2、漏洞成因printf函数在执行时,首先进行格式化字符串的解析–从栈(或者寄存器)获取参数并与符号说明进行匹配,然后将匹配的结果输出到屏幕上,那么 ,如果格式化字符串中的符号声明与栈上参数不能正确匹配,比如参数个数少于符号声明个数时,就会造成泄漏。而本书,p原创 2021-03-20 17:56:35 · 5149 阅读 · 0 评论 -
[PWN][基础篇]什么是Canary保护
什么是Canarygdb指令复习有无Canary呢就是在函数压栈的时候,函数刚开始执行的时候,它会多一个参数,也就是在ebp的上面,会压入一个Canary的值,在子函数验证完之后,对比Canary的值,看看是否相等。不相等,代表程序被修改,产生了异常。本次实验教学代码如下:实验目的,对比有无Canary保护的程序有何不同gcc -m32 -no-pie -fno-stack-protector -o canary canary.c -m32 32位程序-no-pie 中间没有空格-fn原创 2021-03-20 15:38:37 · 4685 阅读 · 0 评论 -
[PWN][基础篇]保护函数和溢出实例
[PWN][基础篇]保护函数和溢出实例一、常见的保护1、CANNARY(栈保护)2、NX(DEP)3、PIE(ASLR)二、神奇的小知识1、如何检查文件的保护情况2、编译时如何关闭这些保护呢3、查看程序使用了哪些函数三、实例教学一、常见的保护1、CANNARY(栈保护)栈溢出保护是一种缓冲区溢攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让shellcode能够得到执行,当启动栈保护后,函数开始执行的时候会显往栈里插入cookie的信息,当函数真正返回的时候会验证cook原创 2021-03-19 22:08:45 · 5005 阅读 · 0 评论 -
[PWN][基础篇]基础理论
[PWN][基础篇]基础理论1、相关知识2、栈帧1、相关知识溢出概念:在计算机中,当要表示的数据超出计算机所使用的的数据表示范围时,产生了数据的溢出产生的原因:1、使用了非类型安全的语言 比如C和C++2、用不可靠的方式存取或者复制内存缓存区3、编译器设置的内存缓冲区靠太近关键数据结构PWN的概念:“呯!!!”指的是攻破设备或者系统。PWN常用的寄存器,ESP,EBP,EIPESP:栈顶指针,在push和pop时会有变化EBP:栈底指针,用来索引确定函数参数或者局部变量的位置(经常访原创 2021-03-19 15:15:35 · 5002 阅读 · 0 评论