[NewStarCTF 2023]canary
0x01 前言:初见Canary保护,主要还是了解Canary的原理以及如何绕过 0x02 分析:check: 可以看到开了canary保护 原理是在一个函数的入口,先从fs/gs寄存器中取出一个四字节(eax)或者八字节的rax的值存在栈上(最低位都是\x00),当函数结束是会检查这个栈上的值是否和存在去的值一致,若一致则正常退出,如果是栈溢出或者其他原因导致canary的值发生变化,那么程序就会执行___stack_chk_fali函数,继而保护程序 我们先打开ida看看:可以看到有printf, 大致的思路就是通过字符串格式化漏洞, 把字符串的偏移给找出来, 然后通过下面的read做栈溢出, 正常溢出到后门函数, 但是在溢出的时候我们把canary的值给修改了, 所以在构造payload的时候需要注意payload的结构, 首先我们先执行下这个程序:可以看到字符串的偏移是6, 接下来用gdb看看canary在哪里, 我们先在main函数的call printf这里下一个断点:首先启动gdb, 输入 gdb ./canary 打上断点: pwndbg>...
SUCTF_SU_BBRE
0x01 前言:小弟第一回参加SUCTF,只打了day1,这题算是re的签到吧,很可惜最后也没有做出来,就差了中间地址跳转这一步 0x02 分析:上来是一大段汇编, 可以选择硬看或者问ai去让他转换成一个c语言 .text:004021DD.text:004021DD ; =============== S U B R O U T I N E =======================================.text:004021DD.text:004021DD ; Attributes: bp-based frame fuzzy-sp.text:004021DD.text:004021DD ; int __cdecl main(int argc, const char **argv, const char **envp).text:004021DD public main.text:004021DD main proc near ; DATA XREF:...
![[NewStarCTF 2023]canary](/image/cover/canary.jpg)
