当前位置:首页 > 经验 >

shellcode一般满足什么要求(shellcode编程揭秘)

来源:原点资讯(www.yd166.com)时间:2022-11-07 08:08:51作者:YD166手机阅读>>

示例


题目下载地址:

https://github.com/Qwaz/solved-hacking-problem/tree/master/pwnable.kr/ascii

使用ida载入ELF文件查看伪代码。发现程序先分配了一块内存,然后向内存中写长度为499的数据(Printable),在函数vuln中使用strcpy时未检测源字符串长度发生栈溢出。

shellcode一般满足什么要求,shellcode编程揭秘(5)

思路:

1.生成BufferRegister为EAX的shellcode

2.构造Alphanumeric Instructions设置寄存器EAX为shellcode的地址

3.将Printable shellcode写入mmap的内存中

4.构造ROP Chain跳入0x80000000

5.执行shellcode

STEP1


使用ldd查看程序并未加载动态库可以确定本程序是静态编译的。静态编译的程序通常有大量的ROP Gadgets供我们使用,不过题目要求输入的字符为可打印字符,这就需要Gadgets的地址是Printable的。

shellcode一般满足什么要求,shellcode编程揭秘(6)

明显看出pop3_ret pop3_ret pop2_ret可以让程序跳入0x80000000执行shellcode。然后使用rp 在dump出的vDSO内存空间中搜索ROP Gadgets。在offset中寻找Printable的Gadgets发现有pop3_ret(0x00000751)和pop2_ret(0x00000752),这样就可以构造出跳入0x80000000的ROP Chain。

STEP2


使用metasploit生成BufferRegister为EAX的shellcode,现在需要编写Printable Instructions将EAX设置为shellcode起始的地址。opcode为Alphanumeric的指令如下表所示

shellcode一般满足什么要求,shellcode编程揭秘(7)

r(register)代表寄存器,r8代表8位寄存器例如al\ah等

m(memory)代表内存

imm(immediate value)代表立即数

rel(relative address)代表相对地址

r/m(register or memory)代表内存或寄存器,可参考ModR/M与SIB编码

在程序跳入shellcode中(0x80000000)时,各个寄存器的值如下。

shellcode一般满足什么要求,shellcode编程揭秘(8)

栏目热文

shellcode免杀原理(shellcode免杀技巧)

shellcode免杀原理(shellcode免杀技巧)

原创AgeloVito合天智汇0x01 前言​ 2019年,告别了coder的世界,告别了从前的生活。我决定暂时抛开金钱...

2022-11-07 08:06:49查看全文 >>

shell脚本原理(shell脚本 基本知识)

shell脚本原理(shell脚本 基本知识)

Spring框架最新的PoC这两天出来的一个RCE漏洞,但是有以下的条件限制才行:必须是jdk9及以上必须是部署在tom...

2022-11-07 08:01:55查看全文 >>

shellcode怎么写(shellcode开发)

shellcode怎么写(shellcode开发)

这是2008年写的文章, 没有正式发表过,里面使用的环境不记得是i386Linux还是AMD64的Linux了。其实,叫...

2022-11-07 08:12:49查看全文 >>

通用shellcode编写实例(shellcode执行原理)

通用shellcode编写实例(shellcode执行原理)

1)编写 hello world 脚本#!/bin/bash # 编写hello world脚本 echo "...

2022-11-07 08:06:54查看全文 >>

shellcode应该放在哪(shellcode使用教程)

shellcode应该放在哪(shellcode使用教程)

在开始今天课程之前,先回忆下上一讲在结束时,我提出的windows平台下的几个关键问题:1:缓冲区距离返回地址间的距离确...

2022-11-07 08:38:25查看全文 >>

shellcode 入门(shell编程入门教程)

shellcode 入门(shell编程入门教程)

payload和shellcode的区别Payload是是包含在你用于一次漏洞利用(exploit)中的ShellCod...

2022-11-07 08:13:49查看全文 >>

shellcode加载器(shellcode编程揭秘)

shellcode加载器(shellcode编程揭秘)

shellcode是嵌入在恶意程序中的一段代码,在感染受害者的目标系统后,可以获取命令Shell代码,例如类UNIX操作...

2022-11-07 08:14:23查看全文 >>

shellcode写法(简单shellcode学习)

shellcode写法(简单shellcode学习)

原文首发:看雪论坛 http://bbs.pediy.com/thread-217513.htm前言在构造一个shell...

2022-11-07 08:36:18查看全文 >>

shellcode的原理与编写(shellcode代码)

shellcode的原理与编写(shellcode代码)

0x01 前言2019年,告别了coder的世界,告别了从前的生活。我决定暂时抛开金钱至上的价值体系,以一个Fuckin...

2022-11-07 08:20:19查看全文 >>

shellcode指的是什么(shell脚本指什么)

shellcode指的是什么(shell脚本指什么)

网络安全的定义什么是网络安全?1、国际化标准组织(ISO)引用ISO-74982文献中对安全的定义:安全就是最大程度地减...

2022-11-07 08:46:49查看全文 >>

文档排行