转换汇编到shellcode的过程
来源:互联网 发布:女生做数据运营 编辑:程序博客网 时间:2024/06/11 13:39
汇编代码如下:
section .text global _start_start: jmp shellhere: xor rax,rax pop rdi xor rsi,rsi xor rdx,rdx add rax,59 syscallshell: call herebash db "/bin//sh"
编译执行过程如下:
jay@ubuntu:~/Desktop/bin2shell$ vim shell.asmjay@ubuntu:~/Desktop/bin2shell$ nasm -f elf64 shell.asm -o shell.ojay@ubuntu:~/Desktop/bin2shell$ ld shell.o -o shell jay@ubuntu:~/Desktop/bin2shell$ ./shell $ lsREADME.md bin2shell.sh shell shell.asm shell.o$ exit
用如下bin2shell.sh 脚本将二进制的shell程序 转为x86_64位的shellcode
#!/bin/bashfor i in $(objdump -d $1 |grep "^ " |cut -f2); do echo -n '\x'$i; done;echo
原理:objdump -d后取带数字的每行的第二个字段 并在其前加入 “\x“ 之后echo输出
jay@ubuntu:~/Desktop/bin2shell$ objdump -d shellshell: file format elf64-x86-64Disassembly of section .text:0000000000400080 <_start>: 400080: eb 10 jmp 400092 <shell>0000000000400082 <here>: 400082: 48 31 c0 xor %rax,%rax 400085: 5f pop %rdi 400086: 48 31 f6 xor %rsi,%rsi 400089: 48 31 d2 xor %rdx,%rdx 40008c: 48 83 c0 3b add $0x3b,%rax 400090: 0f 05 syscall 0000000000400092 <shell>: 400092: e8 eb ff ff ff callq 400082 <here>0000000000400097 <bash>: 400097: 2f (bad) 400098: 62 (bad) 400099: 69 .byte 0x69 40009a: 6e outsb %ds:(%rsi),(%dx) 40009b: 2f (bad) 40009c: 2f (bad) 40009d: 73 68 jae 400107 <bash+0x70>
最后效果如下:
jay@ubuntu:~/Desktop/bin2shell$ ./bin2shell.sh shell \xeb\x10\x48\x31\xc0\x5f\x48\x31\xf6\x48\x31\xd2\x48\x83\xc0\x3b\x0f\x05\xe8\xeb\xff\xff\xff\x2f\x62\x69\x6e\x2f\x2f\x73\x68
最后利用shellcode的c代码如下:
# gcc -fno-stack-protector -z execstack shell-testing.c -o shell-testing#include<stdio.h>#include<string.h>unsigned char code[] = "\xeb\x10\x48\x31\xc0\x5f\x48\x31\xf6\x48\x31\xd2\x48\x83\xc0\x3b\x0f\x05\xe8\xeb\xff\xff\xff\x2f\x62\x69\x6e\x2f\x2f\x73\x68";main(){printf("Shellcode Length: %d\n", (int)strlen(code));int (*ret)() = (int(*)())code;//声明一个函数指针 将code数组的地址转换同一类型的指针并赋值ret();}
代码:https://github.com/tangsilian/SomeCode/tree/master/bin2shellcode
参考:
https://www.exploit-db.com/exploits/42791/
cut 命令解释:https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_72/com.ibm.aix.cmds1/cut.htm
阅读全文
0 0
- 转换汇编到shellcode的过程
- shellcode转换成汇编代码
- stm32启动过程(汇编代码)及汇编到main函数的转换过程的实现
- C/C++ 到 shellcode 过程
- 71.windbg-转换shellcode为汇编
- 从arm 到 gnu 的汇编转换
- 汇编---十进制到十六进制的转换
- ARM SDT下汇编到GNU汇编的转换
- ARM SDT下汇编到GNU汇编的转换
- shellcode转换
- 内联汇编制作 shellcode
- 从汇编代码提取Shellcode的简单实现
- 汇编--十进制到二进制转换
- 汇编->十进制到十六进制数转换的程序实现
- 汇编->十进制到二进制书转换的程序实现
- 汇编--二进制到多种进制的转换与输出
- 逻辑地址到物理地址的转换过程
- 逻辑地址到物理地址的转换过程
- bean with name 'mappingJacksonHttpMessageConverter' defined in class解决办法
- PostgreSQL for Windows安装
- 两个数换位运算(不用第三变量)--异或
- addrinfo结构体与getaddrinfo函数
- Github
- 转换汇编到shellcode的过程
- 快速简单解决Ubuntu安装后无wifi列表, 连不了网.
- RecyclerView自定义分割线实现
- 浅述经典的4种卷积网络之(3)Google Inception Net
- 通过dao操作数据库的大概过程
- jquery根据后台返回值设置checkbox选中
- 乱搞——均分纸牌
- Android酷炫实用的开源框架(UI框架)
- The value of attribute "title" associated with an element type "question" must not contain the '<' c