码迷,mamicode.com
首页 > 其他好文 > 详细

【CTF】逆向基础知识1

时间:2015-04-05 21:44:45      阅读:407      评论:0      收藏:0      [点我收藏+]

标签:

虽然逆向涉及的知识比较多,但是如果把应用限定在CTF题目之类的话,我们这里对经常用到的一些基础知识做一个总结。

思路来源:Blue-lotus&信协集训&c++安全编码&0day安全&Google

  • stack frame 的基本概念

ebp 的作用是?

ebp和esp是栈的顶端、底端的标志

ebp 和 esp 是怎么相互配合的?

相互配合是指在函数调用时,ebp入栈,被赋新值,然后esp抬高,从而在函数调用时开辟新的栈帧并保持栈帧平衡。

calling convention 是什么?x86 和 x64 的参数传递顺序是什么?

calling convention(函数调用约定)就是函数调用入栈顺序、复原等调用细节的约定,大概常用的有__cdecl __fastcall __stdcall等,具体细节可以百度之(或者追溯到半年前的软件安全课)

x86的参数传递顺序应该是从右向左入栈(不同的调用会有不同),x64架构统一了调用规则,调用的前四个参数总是放在寄存器中传递,剩余的参数则压入堆栈。(这4个用于存放参数的寄存器分别是:存放整数参数的RCX,RDX,R8,R9;存放浮点数参数的XMM0,XMM1,XMM2,XMM3。具体参数类型不同时,使用寄存器的规则见http://yukei.blog.163.com/blog/static/1125877032009113
134353876/)

  • shellcode 是什么?

shellcode从字面上理解是执行shell的代码,在实际中,利用漏洞的代码相当于子弹头,shellcode则相当于弹药。当然,现在总是把他们放在一起叫shellcode。如果要拿shell的话,shellcode要准备两段(我才不会告诉你们用Metasploit去做)

buffer overflow 的原理?

  • 覆盖了什么造成程序崩溃?

返回地址,破坏堆栈平衡

  • stack cookie 是什么?

以前没有听过这种说法,它指的应该是函数执行完毕之后没有清空的栈帧,虽然不能通过ebp来读取其中内容,但是仍然存在泄露的可能。

  • 利用 buffer overflow 直接执行 shellcode 的条件是什么?

入口地址的确定。

【CTF】逆向基础知识1

标签:

原文地址:http://www.cnblogs.com/windcarp/p/4394766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!