能力值:
( LV2,RANK:10 )
|
-
-
76 楼
再吱三声,以资感谢
|
能力值:
( LV2,RANK:10 )
|
-
-
77 楼
继续坐后排,慢慢看
很好的教材,很好的老师
|
能力值:
( LV2,RANK:10 )
|
-
-
78 楼
受益良多啊
|
能力值:
( LV2,RANK:10 )
|
-
-
79 楼
该图左边的栈帧结构是怎么分析出来的?是根据OLLydbg中的反汇编得来的吗?
谢谢
|
能力值:
( LV2,RANK:10 )
|
-
-
80 楼
跟随学习ing
|
能力值:
( LV2,RANK:10 )
|
-
-
81 楼
重新复习一遍,这次理解透了
|
能力值:
( LV2,RANK:10 )
|
-
-
82 楼
好帖,学习了。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
83 楼
受大话西游毒害不清啊
|
能力值:
( LV2,RANK:10 )
|
-
-
84 楼
感谢楼主的分享。
|
能力值:
( LV2,RANK:10 )
|
-
-
85 楼
Can I mark it, mark mark
|
能力值:
( LV2,RANK:10 )
|
-
-
86 楼
吱吱吱吱
|
能力值:
( LV2,RANK:10 )
|
-
-
87 楼
吱吱吱~真的可以做到啊,好厉害!
|
能力值:
( LV2,RANK:10 )
|
-
-
88 楼
[QUOTE=alayg;463278]
该图左边的栈帧结构是怎么分析出来的?是根据OLLydbg中的反汇编得来的吗?
谢谢[/QUOTE]
通过调试确定buffer数组距离栈帧中函数返回地址的偏移量?
观察目标返回值上面那块栈的变化情况?
本人用的办法:
1、运行程序-随便输入密码“aaaa”-得到提示“incorrect password”(如果知道源程序,可能知道有congratulation!you have ...这个字符串)
2、通过右击-超级字符串查找incorrect password,双击定位
3、通过分析在0x004010E6处下断点,运行程序,输入密码:aaaaaaaa(稍长点)
4、最初是F7一步步跟进去,观察右下角栈变化情况,在哪块会改变栈地址:0x0012FB28上面区域的值(目标肯定是覆盖这个地址,所以观察它上面内容变化情况)
5、其实一步步跟进能找到strcpy调用的地方,能否发现 0x4011F1 MOV DWORD PTR DS:[EDI], EDX ,这里第一次EDI值就是缓冲区开始位置!
在0x004011F1处下断点,运行到此处时EDI值为栈0x0012FB18, 刚才压入的返回值在栈0x0012FB28,所以缓冲区开始位置到返回值位置长度为0x10, 16字节!于是乎,用16字节填充,第17-20字节设置为目标返回地址(congratulation 指令地址)!完活
这是我的方法,不知有没有更快捷直观的方法!
|
能力值:
( LV2,RANK:10 )
|
-
-
89 楼
缓冲区溢出分析第03课:缓冲区溢出的利用
里面提到通过一长串字符来定位溢出位置!TestCode[]= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
|
能力值:
( LV2,RANK:10 )
|
-
-
90 楼
吱……吱……吱……吱……吱……吱……
|
能力值:
( LV2,RANK:10 )
|
-
-
91 楼
您好,我是使用linux系统来进行实验的,但是我发现,按照同样的方法,在windows平台上就可以溢出成功,但是放到linux下,就会出现无法复现的情况,请问这是因为linux跟windows架构不同吗?我的linux是装在虚拟机下的,还请您能够给我讲解一下,谢谢您了!
|
|
|