⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 技术难点.txt

📁 经典缓冲区溢出攻击代码
💻 TXT
字号:
3月14日
1,objdump -d bufbomb.o和objdump -d bufbomb得到的汇编代码段是否有区别?
  一个是没有链接,一个链接过了.选择使用objdump -d bufbomb,因为这个代码链接过了,可以通过eip的值来观察具体执行到哪条代码
2,gdb调试时设置的断点处于printf()语句的后面,可是为什么不先打印出那句话?
  因为实际上通过观察eip的值可以发现指令执行并没有达到调用printf()语句的那条指令
3, 在gdb中p /x *(int*)(ebp)是打印ebp中的值还是ebp所指单元中的值?
   打印的是ebp所指单元中的值,如果要打印ebp的值,可以使用p /x $ebp即行
3月15日
1,寄存器eip中存储的是当前执行的指令的地址,可以通过p /x $eip来观察现在执行到哪条指令。
2,究竟应该写入一些什么样的值了?这些值要求具有什么特性才能保证能够达到题目中的要求?
3,test和getbuf 的栈分布情况表究竟是什么样的了?
   当设置断点break getbuf时,函数的执行已经进入了getbuf函数,此时栈桢处于getbuf函数的栈桢中
   ______
   ______  ebp test函数的栈桢 0xbfffdfe8
   ______
   ______  esp bfffdfe0 当程序执行至48行和49行时的栈首指针,指令地址分别为0x80484aa和0x80484ba
   ______  此处有2个存储器单元没有使用
   ______
   ______  getbuf函数返回到test函数时的返回地址, 内容为0x80484bf,即位调用getbuf指令的后一条指令
   ______  ebp getbuf函数的栈桢 0xbfffdfd8
   ______
   ______
   ______  此处有6个储存器单元没有使用
   ______
   ______
   ______  esp 0xbfffdfc0 

   
4,写进buffer的数据是怎么存放的?总共为buffer分配多少空间?
   存放在getbuf函数的栈桢中,从$ebp -24号存储单元开始存放,一直往栈地址增大的方向存放,可以一直到$ebp -1,注意最后一定要留一个字节给'\0',否则当程序试图自己往$ebp -1号存储单元里面写入'\0'时会出现段错误.
5, test函数中getbuf 函数的返回值是1?那么eax里面保存的就是数值1罗?局部变量val保存在什么位置?是否可以运用别人的思想?
   就是改变保存局部变量val的存储单元的值,同时改变getbuf函数的返回地址使其指向下一条指令的地址?
   返回值是1,保存在局部变量 val中,而val的保存地址是$ebp -4。处于test的栈桢中
   
6,注意输入数据的时候要将低位字节输入在前。
7, 由于在getxs函数中存在最后一句话 *sp++ = '\0';所以如果只是简单的改变一下val变量的存储单元的值,会造成这句话在写入时破坏test
   栈桢中所保存的main函数ebp值和返回地址,所以要重新覆盖这两个单元的值。
8,为什么main函数的ebp值老是在变化?

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -