【0day shellcode编写艺术】—— jmp esp、动态获取api。后续:编码、压缩

博客探讨了shellcode的编写,特别是如何使用jmp esp进行动态定位,以解决缓冲区溢出攻击中shellcode的地址问题。作者遇到动态获取API时的访问权限问题,并分享了使用OD插件和Dependency Walker的经验。文章还提及了shellcode的编码和压缩流程,以及获取API hash的重要性。
摘要由CSDN通过智能技术生成

此次主要徒手体会了一下编写shellcode 的不容易。当真不容易,看着作者的代码,都感觉自己无处可以下手了。 需要的底层原理知识也还挺多需要补充上去的。

打算后期再逐渐补充。目前阶段将jmp esp弄懂了。后面动态获取api在主机上出错了。问题和搜索jmp esp代码时候貌似一样,产生访问越权的问题。后期再继续解决吧。

目前整理一下整个的思路。

1、shellcode、expoit的概念;

2、为了更好的注入shellcode,里程碑式的方法。使用jmp esp。

3、后续:动态获取api、编码shellcode、压缩shellcode。

后续内容用在之后再学习。

1、shellcode、exploit概念

shellcode:通称缓冲区溢出攻击中植入进程的代码。

exploit: 代码植入的过程成为漏洞利用,即exploit。

2、里程碑式的注入方法:jmp esp

之前我们的一个思路,是将shellcode注入到缓冲区里面。通过溢出修改返回地址,指向缓冲区的起始位置从而执行shellcode。

但是这样会有一个弊端。目前溢出修改的返回地址是固定的,如果系统一重新启动,或者重新运行程序,分配的地址就会改变,原来的shellcode就不行了,需要再次od看地址,修改地址。这样很不方便。这个问题再困扰了人们很久以后,在1998年,黑客组织“cult of the dead cow”的Dildog首次提出了使用jmp esp的动态定位,成为shellcode里程碑式的进步。

98年,我还是小屁孩的。外面的世界就早已经风起云涌了= =惊讶

使用jmp esp有这样的原理。在每次当前函数返回之后,esp都会指向紧紧挨着的下一个栈帧的栈顶。那么通过将shellcode放在返回地址后面,就可以动态的执行了。

(其实我考虑能不能在shellcode中直接获取当前缓冲区的起始地址,然后动态的放到返回地址中,但发现难度大,而且麻烦,代码量也会增加很多。革命式的进步真是很伟大!)

目前的问题就是通过代码搜索内存的jmp esp指令的。使用OD插件可以成功,但是自己设计程序却始终无法找到。

uer32.dll找0x1000个字节就说越权了,不明白是为什么,难度目前windows对这个进行了控制?

OD的插件最后放出来。

自己写的代码(书上的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值