首页
社区
课程
招聘
[旧帖] [原创]《0day安全:软件漏洞分析技术》读后小感(申请邀请码) 0.00雪花
发表于: 2009-10-17 20:52 1181

[旧帖] [原创]《0day安全:软件漏洞分析技术》读后小感(申请邀请码) 0.00雪花

2009-10-17 20:52
1181
首先很惭愧地说:俺没有买这本书,是从学校图书馆借到的!其间借过俩次,第一次借到的时候,偶还是大二,由于俺是学软件工程嘛,又有一个“黑客”梦(学这行的年少时大概都有这个梦吧!还有一个是“游戏梦”,写出自己想象中的游戏!),所以借来硬着头皮看,结果可想而知,大二还没有学操作系统,而数据结构,数据库正在学,汇编虽然学了,但我敢保证偶们班大部分学得不好(包括偶),当然c啊,c++啊,java啊,这些语言还凑合,看起来纯粹云里雾里啊,虽然说大部分栈溢出啊,格式化串漏洞啊。。。是c引起的,但光懂c成么?所以书里的代码能看懂,分析却基本看不懂,因为根本没有一个整体的概念,再者那些个语言也不是很熟练,于是就不了了之了,这学期大三开了操作系统,偶买了那个荷兰老头的《现代操作系统》,细细地看了其中重要滴章节,收获颇丰啊,老师常说:“外国人写的书,厚是厚了点,可看着不费劲”,这绝对是句实话啊,其间还看了很多各方面的书籍,才慢慢有了系统的认识,于是第二次借来了这本书,花了一周将它读完了,当然其中还有很多问题没有搞懂,但收获也不少!

    以前一直对堆栈溢出(其中尤其是堆溢出,偶还是没有理解透。。。)深不可测啊,其实思想并不难,栈溢出也就是拷贝字符串时,目的地址空间容纳不下,于是将其周围的地址空间覆盖,而这些地址空间如果刚好事诸如返回地址,一些重要控制变量的话,就会被利用了。。。特别是要注意指向栈帧头的ESP和尾的EBP,跳板jmp esp,了解栈帧内数据的排列方式,动态获取api地址等。堆溢出由于是动态分配内存相对难很多,关键也就是将堆块的块首中的flink和blink覆盖掉,而由于堆表式双向列表,在从其中卸下时前后表项的指针发生变化,这时候修改flink和blink就可能被利用。。。虽然原理懂了,但离实际操作还有很大距离啊。。。。
以下是偶勾画的一些记忆点:(有些章节还没看呢)

1.ESP:永指向顶端栈帧的栈顶;
  EBP:指向顶端栈帧的底部;
2.栈帧中主要包括局部变量,栈帧状态值,函数返回地址;
  返回地址送到EIP;
  函数返回值送往EAX;
3.windowsC++类成员函数的this指针靠ECX来传递;
4.跳板jmp esp等。最佳的跳转地址位于那些千年不变且据湖北所有进程都加载的模块!
5.动态定位API的步骤!
6.占用态的堆块诶使用的它的程序索引,而块表只索引所有空闲态的堆块;
块表用于精确匹配,无“找钱”问题,且只有4项!(偶觉得书中第163页讲的太抽象,难懂!)
7.覆盖异常处理函数!
8.异常处理和堆分配,会检测进程是否属于调试状态,需在代码中加断点!
9.覆盖虚表指针与虚函数入口地址!
10.heap spray:利用javascript申请超过200M的堆内存,然后用0x90和shellcode覆盖之。

偶只是用偶有限的知识大体弄懂了思路和原理,路还很长呢。。。。接受BS哈偶继续研究去鸟,飘走~~~

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//