记一次shellcode提取经历

前言

闲来无事,以前都是去exploit-db找shellcode使用,但是有的时候似乎并不那么顺利,找到了之后却由于一些问题(比如之前有一次,要求shellcode里边不能出现0b和0c之类制表符,否则会提前中断,但是一些打开shell的shellcode基本都有),想到如果自己掌握了提取方法,或许以后会方便一点,根据自己的要求进行一些更改或者调整指令,为此还专门学习了一下内联汇编的使用(发现并没有什么太大的用处)。

大致思路

由于我只是进行一下shellcode提取的实验,主要目的是获得一个可以打开shell的shellcode,暂时不考虑简短性通用性等问题,只要达到目的即可,基本思路,是使用execve系统调用来打开一个shell。

系统调用?

首先说一下系统调用,系统调用是linux交流用户空间和内核空间的一个“通道”,用户应用程序通过系统调用可以得到一些只有内核才能够提供的功能。调用系统调用的方法为使用int 0x80汇编语句,也就是0x80号中断来进行,而系统调用又要涉及到参数传递规则和一般函数的不同:系统调用通过寄存器传参,eax代表调用号,然后ebx,ecx,edx等依次为系统调用所需要的参数1,参数2,参数三等

我们需要用到的execve系统调用的原型为:

int execve(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值