美文网首页
Canary机制 -格式化字符串漏洞

Canary机制 -格式化字符串漏洞

作者: Zero_0_0 | 来源:发表于2018-10-09 23:24 被阅读0次

    一.
    canary相当于一个标志当修改程序时,会发现程序是否被修改。
    注: 找到canary偏移地址,填充打印出canary的值
    1.程序源码:

    图片.png
    2.编译:gcc -m32 -ggdb -z execstack -fstack-protector -no-pie -o pwnme Cannary.c生成pwnme程序
    3.查看偏移地址是否一直在变动:ldd pwnme
    注:关闭地址随机化echo 0 > /proc/sys/kernel/randomize_va_space
    4.运行pwnme
    OK!
    二.调试
    1. 图片.png
    2.进入汇编窗口layout asm 图片.png
    3.输入ni执行下一条指令,回车快捷方式
    4.一直往下xor %gs:0x14,%eax 异或进行比较 图片.png
    三.
    canary泄露
    1.canary是一直变化的值,每运行一次就发生一次变化。eax的值变,也就说明canary的值也发生变化。比较如下图: 图片.png 实际情况,跟自己的eax的值.
    2.所以说canary的值具有不可预测性
    但是,eax的值来源于gs:0x14,而gs:0x14存在于栈空间上,所以我们只要找到它栈空间上的位置,就可以泄露它的值。接下来我们就利用格式化字符串漏洞泄露Canary
    3.格式化字符串漏洞在printf在下断点。 图片.png
    4.运行 输入值
    5.然后查看栈空间内容,esp = 0xffffcf80,指向字符串起始位置 =0xffffcfec
    图片.png
    注:由此可知格式化字符串偏移为 = (0xffffcfec - 0xffffcf80) / 4 = 27

    相关文章

      网友评论

          本文标题:Canary机制 -格式化字符串漏洞

          本文链接:https://www.haomeiwen.com/subject/yncuaftx.html