flag{e270d0006de4411s6d5a73bcd}
通过溢出canary的00字节,泄露出一些东西,然后第二次就直接溢出获得shell了,有system,有bin/sh,,有canary
远端的环境是咋样的,就还是有点奇怪,说一下问题: 远程能通,本地的话是会报错,调试了发现是system函数的问题,直接将返回地址设置为system就会出问题。 解决方法: 将payload的system的地址替换为 call system的地址。例如hint函数里的call _system (0x40080C) 然后本地也能通。 但是为什么直接system会出问题还不清楚
可能是你那个版本的system函数里面有检测栈对齐的代码,导致栈空间变化从而导致程序运行出错,你可以返回两次ret指令在返回到system,看看会不会报错
@main1o 不行奥,但是能打通就好(手动滑稽)
这个什么原因啊,试了一下也是,改成call _system的地址就打得通,jmp _system的就不可以,老哥你解决了没
学习Canary绕过很好的题目
学到了,学到了。多谢。
问问师傅们,这题wp里面的rid是什么呀,我在ida里面找不到这个玩意儿,萌新求助。。。。
rdi是一个寄存器,x64中经常使用rdi优先传参。
你说的是rdi寄存器吧,里面是函数调用时的第1个参数
为什么远程可以通,但是本地不通呢?
我是弱鸡问一下,,,为什么远程可以通,但是本地不通呢?
canary 是不是要通过read下面的print泄露出来,然后进行exp?
大佬们,canary的偏移位置怎么算啊
就在 rbp - 8 处
...
评论
草稿箱. 1年前
举报
flag{e270d0006de4411s6d5a73bcd}
罗老师yyds 1年前
举报
通过溢出canary的00字节,泄露出一些东西,然后第二次就直接溢出获得shell了,有system,有bin/sh,,有canary
Asteri5m 2年前
举报
远端的环境是咋样的,就还是有点奇怪,说一下问题: 远程能通,本地的话是会报错,调试了发现是system函数的问题,直接将返回地址设置为system就会出问题。 解决方法: 将payload的system的地址替换为 call system的地址。例如hint函数里的call _system (0x40080C) 然后本地也能通。 但是为什么直接system会出问题还不清楚
liert 9月前
举报
可能是你那个版本的system函数里面有检测栈对齐的代码,导致栈空间变化从而导致程序运行出错,你可以返回两次ret指令在返回到system,看看会不会报错
Asteri5m 1年前
举报
@main1o 不行奥,但是能打通就好(手动滑稽)
main1o 1年前
举报
这个什么原因啊,试了一下也是,改成call _system的地址就打得通,jmp _system的就不可以,老哥你解决了没
rogxo 2年前
举报
学习Canary绕过很好的题目
tomPeter15 2年前
举报
学到了,学到了。多谢。
xiakesixju 2年前
举报
问问师傅们,这题wp里面的rid是什么呀,我在ida里面找不到这个玩意儿,萌新求助。。。。
DTOFF 2年前
举报
rdi是一个寄存器,x64中经常使用rdi优先传参。
Kant7 2年前
举报
你说的是rdi寄存器吧,里面是函数调用时的第1个参数
bock 3年前
举报
为什么远程可以通,但是本地不通呢?
q起风了 3年前
举报
我是弱鸡问一下,,,为什么远程可以通,但是本地不通呢?
RXCZERO 3年前
举报
canary 是不是要通过read下面的print泄露出来,然后进行exp?
AIYI 3年前
举报
大佬们,canary的偏移位置怎么算啊
HDUchuj 3年前
举报
就在 rbp - 8 处