能力值:
( LV2,RANK:10 )
|
-
-
76 楼
不是方勇兄 !
|
能力值:
( LV2,RANK:10 )
|
-
-
77 楼
报名来晚了一点,不好意思
|
能力值:
( LV2,RANK:10 )
|
-
-
78 楼
老师,那个插件怎么下不了?是不是因为我是新来的哈!
|
能力值:
( LV2,RANK:10 )
|
-
-
79 楼
又进步了一点儿,,哈哈,,高,实在是高!
|
能力值:
( LV4,RANK:50 )
|
-
-
80 楼
学习了 不错的定位方法
|
能力值:
( LV2,RANK:10 )
|
-
-
81 楼
软件漏洞分析入门_6_初级shellcode_定位缓冲区 真的好喜欢
|
能力值:
( LV2,RANK:10 )
|
-
-
82 楼
jmp esp 这个地址我用您的程序找到了,但是后来把这个地址写到了password.txt里面,一运行准备溢出的程序,就弹出这个地址不能读写的警告,user32.dll里面的地址不能读写,这是什么原因,请老师指教
|
能力值:
( LV2,RANK:10 )
|
-
-
83 楼
成功啦,谢谢老师,
|
能力值:
( LV2,RANK:10 )
|
-
-
84 楼
努力学习...
|
能力值:
( LV2,RANK:10 )
|
-
-
85 楼
谢谢楼主,正要学习
|
能力值:
( LV2,RANK:10 )
|
-
-
86 楼
很不错,不过为什么用你的那个插件OllyUni.dll,OllyDBG要崩溃啊~~~~我用的是v1.0版本
|
能力值:
( LV5,RANK:60 )
|
-
-
87 楼
为什么在第5讲的MessageBoxA后面添加ExitProcess,不能够安全退出呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
88 楼
正在学习shellcode的编写与实现,但现在仅仅会根据书上的事例调试,打算分析一下网上流行的测试漏洞的弹出计算器程序的代码,结果还没有思路,郁闷中!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
89 楼
跟帖学习,所有实验成功完成,继续向高手不断学习!
|
能力值:
( LV2,RANK:10 )
|
-
-
90 楼
为什么我在call MessageBoxA 后加上
push 0x00401133 (打印Congratulation! You have passed the verification!\n 的地方)
jmp esp
我就是想在call messageboxa后跳到正确的流程.
可是为什么反汇编出来的代码只到 68 33114000(push 0x00401133的地方)就没了.后面都是int3了啊.
我后面明明有接着jmp esp的代码啊??
接着我按照failwest的例子,最后几行代码改成
push ebx
mov eax,0x77e1f1fe (我机器上的ExitProcess函数地址)
call eax
这样反汇编出来的代码又没有任何问题.程序弹出messagebox后正常调用了exitprocess了.
奇怪.谁帮我解释下.我要跳到程序提示正确的地方去为什么不行?
|
能力值:
( LV8,RANK:130 )
|
-
-
91 楼
非常感谢这么好的资料!经过学习,成功了!哈哈! 继续!
|
能力值:
( LV2,RANK:10 )
|
-
-
92 楼
0040103B |. 50 push eax ; /src
0040103C |. 8D4D D0 lea ecx, dword ptr [ebp-30] ; |
0040103F |. 51 push ecx ; |dest
00401040 |. E8 EB010000 call strcpy ; \strcpy
00401045 |. 83C4 08 add esp, 8
00401048 |. 68 1C604200 push 0042601C ; /s2 = "1234567"
0040104D |. 8B55 08 mov edx, dword ptr [ebp+8] ; |
00401050 |. 52 push edx ; |s1
00401051 |. E8 4A010000 call strcmp ; \strcmp
00401056 |. 83C4 08 add esp, 8
00401059 |. 8945 FC mov dword ptr [ebp-4], eax
0040105C |. 8B45 FC mov eax, dword ptr [ebp-4]
从栈0012FAF0处开始到0012FB20处用垃圾数据填充,0012FB24处用jmp esp地址填充,接下来的0012FB28处开始用shellcode填充,但是当程序执行到mov edx, dword ptr [ebp+8] 这句时,ebp+8为0012FB28,edx指向shellcode开始处,这里并不是一个字符串,所以当程序执行到call strcmp时就会出错。请教有什么办法能够解决这个问题?
|
能力值:
( LV2,RANK:10 )
|
-
-
93 楼
如果在0012FB28处用一个字符串地址填充,0012FB2C处开始用shellcode填充,那函数返回时jmp esp会来到0012FB28处开始执行,这里是一个字符串地址,执行到这里就会结束。
|
能力值:
( LV13,RANK:388 )
|
-
-
94 楼
看来failwest没在更新了
这个我帮她回答
push 0x00401133
这句指令里有个00,strcpy遇到00认为是字符串结束符,没有再压栈了 所以当然不能执行
|
能力值:
( LV13,RANK:388 )
|
-
-
95 楼
[QUOTE=ch_tj2k;704246]0040103B |. 50 push eax ; /src
0040103C |. 8D4D D0 lea ecx, dword ptr [ebp-30] ...[/QUOTE]
strcpy才是溢出元凶,执行call strcpy之后就已经回不来了 strcmp根本不可能执行
f7单步跟着strcpy看,你看retn能回来不
|
能力值:
( LV5,RANK:60 )
|
-
-
96 楼
吱吱吱,谢谢西方失败的扫盲。在这个论坛真能学到不少东西。
|
能力值:
( LV2,RANK:10 )
|
-
-
97 楼
#include <windows.h>
#include <stdio.h>
#define DLL_NAME "user32.dll"
main()
{
BYTE* ptr;
int position,address;
HINSTANCE handle;
BOOL done_flag = FALSE;
handle=LoadLibrary(DLL_NAME);
if(!handle)
{
printf(" load dll erro !");
exit(0);
}
ptr = (BYTE*)handle;
for(position = 0; !done_flag; position++)
{
try
{
if(ptr[position] == 0xFF && ptr[position+1] == 0xE4)
{
//0xFFE4 is the opcode of jmp esp
int address = (int)ptr + position;
printf("OPCODE found at 0x%x\n",address);
}
}
catch(...)
{
int address = (int)ptr + position;
printf("END OF 0x%x\n", address);
done_flag = true;
}
}
}
这断代码在debug下可以正常运行,不过在release版本下会报错,
把try...catch(...)..
改成_try...__except(EXCEPTION_EXECUTE_HANDLER )...就没问题了
|
能力值:
( LV2,RANK:10 )
|
-
-
98 楼
我想问下,为什么我搜索的结果这么少,而且搜索不到类似于下面这段
Location found: call esp in user32
|
能力值:
( LV12,RANK:260 )
|
-
-
99 楼
我也来吱一下
|
能力值:
( LV2,RANK:10 )
|
-
-
100 楼
学习了!!成功 ,吱一声
|
|
|