为什么要用_system函数地址0X400660,而不用system函数地址0X400442呢?main主函数里面也没有跳转到_system函数呀
flag{e270d0006de4411s6d5a73bcd}
师傅们,recvline函数是不是只能接收格式化字符串本来的样子,不能接收赋值之后的样子?
先发送0x240-0x8个a泄露canary,再构造 rop 链在 rbp - 8 处填充泄露的canary,注意栈对齐,需要一定滑板
https://zaoganmaqule.github.io/2024/08/21/bugku-ctf%E7%9A%84pwn%E9%A2%98%E8%A7%A3/#more
通过溢出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绕过很好的题目
学到了,学到了。多谢。
...
评论
nihaolmb 12天前
举报
为什么要用_system函数地址0X400660,而不用system函数地址0X400442呢?main主函数里面也没有跳转到_system函数呀
八一卜kod 25天前
举报
flag{e270d0006de4411s6d5a73bcd}
pjcxxx 2月前
举报
师傅们,recvline函数是不是只能接收格式化字符串本来的样子,不能接收赋值之后的样子?
Caerus 3月前
举报
先发送0x240-0x8个a泄露canary,再构造 rop 链在 rbp - 8 处填充泄露的canary,注意栈对齐,需要一定滑板
da111sy 4月前
举报
https://zaoganmaqule.github.io/2024/08/21/bugku-ctf%E7%9A%84pwn%E9%A2%98%E8%A7%A3/#more
草稿箱. 1年前
举报
flag{e270d0006de4411s6d5a73bcd}
罗老师yyds 2年前
举报
通过溢出canary的00字节,泄露出一些东西,然后第二次就直接溢出获得shell了,有system,有bin/sh,,有canary
Asteri5m 2年前
举报
远端的环境是咋样的,就还是有点奇怪,说一下问题: 远程能通,本地的话是会报错,调试了发现是system函数的问题,直接将返回地址设置为system就会出问题。 解决方法: 将payload的system的地址替换为 call system的地址。例如hint函数里的call _system (0x40080C) 然后本地也能通。 但是为什么直接system会出问题还不清楚
liert 1年前
举报
可能是你那个版本的system函数里面有检测栈对齐的代码,导致栈空间变化从而导致程序运行出错,你可以返回两次ret指令在返回到system,看看会不会报错
Asteri5m 2年前
举报
@main1o 不行奥,但是能打通就好(手动滑稽)
main1o 2年前
举报
这个什么原因啊,试了一下也是,改成call _system的地址就打得通,jmp _system的就不可以,老哥你解决了没
rogxo 3年前
举报
学习Canary绕过很好的题目
tomPeter15 3年前
举报
学到了,学到了。多谢。