| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1492 人关注过本帖
标题:一段程序求姐
只看楼主 加入收藏
lwb603569640
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:283
专家分:436
注 册:2012-11-9
收藏
得分:0 
D:\Microsoft Visual Studio 9.0\VC>shellcode
-1957304949
216826860
1836016568
1869442413
-196769437
1684955576
-129660626
1836016568
-62551774
1435030067
-196768257
-1742423984
-788563967
680997
26
0
2147303424
4208275
1244988
5
1245104
4204112
-1399491304
-2
1244936

D:\Microsoft Visual Studio 9.0\VC>


这是windows  xp  sp3下的运行结果  我在用 windows 7试试

自由、民主、宪政!
2012-11-21 09:14
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
-1957304949
216826860
1836016568
1869442413
-196769437
1684955576
-129660626
1836016568
-62551774
1435030067
-196768257
-1742423984
-788563967
1244960  --------------》就这个地址和后面的是对上了,后面的都对不上、
-858993460    ----------》如果是上面我copy过来的机器代码有问题的话
-858993460    ----------->上面那个是对的地址应该是 当时堆栈中放ebp的地方
-858993460    ------------> 这个对的地址是覆盖掉了ebp的值 后面的东西估计
-858993460    ------------->就不知道是哪来的东西了
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
1244960

这个是我运行的情况

[ 本帖最后由 zhu224039 于 2012-11-21 09:29 编辑 ]

我要成为嘿嘿的黑客,替天行道
2012-11-21 09:23
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
正确的话 应该是 弹出 dos 窗口

我要成为嘿嘿的黑客,替天行道
2012-11-21 09:24
lwb603569640
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:283
专家分:436
注 册:2012-11-9
收藏
得分:0 

自由、民主、宪政!
2012-11-21 09:34
lwb603569640
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:283
专家分:436
注 册:2012-11-9
收藏
得分:0 
以下是引用lwb603569640在2012-11-21 09:34:22的发言:

C:\Users\sky>shellcode
-1957304949
216826860
1836016568
1869442413
-196769437
1684955576
-129660626
1836016568
-62551774
1435030067
-196768257
-1742423984
-788563967
680997
0
0
2147348480
4208275
1244932
5
1245048
4204112
1703823116
-2
1244880

C:\Users\sky>
以上windows 7  sp1    32位  运行结果


Microsoft Windows [版本 6.1.7600]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\lwb603569640>shellcode
-1957304949
216826860
1836016568
1869442413
-196769437
1684955576
-129660626
1836016568
-62551774
1435030067
-196768257
-1742423984
-788563967
680997
0
0
2130567168
4208275
1638148
5
1638264
4204112
1194232214
-2
1638096

C:\Users\lwb603569640>


以上windows7 sp1  64位结果

自由、民主、宪政!
2012-11-21 09:35
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
这个不同的机器 结果不一样?

我要成为嘿嘿的黑客,替天行道
2012-11-21 09:35
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
  你64的 啊  那要修改下程序才可以啊
你把 int *larg_ptr=large_string  这代码改下
改成 long *larg_ptr=(long*)large_string
看看 long 固定是4个字节 32位的
或者修改下面的看看
char large_string[128*4];
void main(){
    char buffer[96*4];
    int i;
    int *larg_ptr=large_string;      //将char字符数组的首地址赋值给一个int 类型的指针,进行int 格式的引用,针对内存的读取方式改变
    for(i=0;i<32*4;i++)                 
        *(larg_ptr+i)=buffer;    // 将32位buffer的地址放入large_string 的整个数据块中
    for(i=0;i<strlen(shellcode);i++)
        large_string[i]=shellcode[i];   //将shellcode的内容按照字节方式放进large_string中
    strcpy(buffer,large_string);        //字符的copy 将larg_string 数据块复制到buffer所指向的数据块中,按字符方式进行
    for(i=0;i<24;i++)
        printf("%d\n",((int*)buffer)[i]);      //这里是强制类型转换输出结果,意思是将char型指针内型强制转换成int型进行内存操作
        printf("%d\n",buffer);
}


[ 本帖最后由 zhu224039 于 2012-11-21 09:40 编辑 ]

我要成为嘿嘿的黑客,替天行道
2012-11-21 09:36
lwb603569640
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:283
专家分:436
注 册:2012-11-9
收藏
得分:0 
以下是引用zhu224039在2012-11-21 09:24:03的发言:

正确的话 应该是 弹出 dos 窗口

shellcode字符数组精心编写的机器指令。  代码利用缓冲区溢出  调用这段代码      也就是利用了一个漏洞

看来  打了补丁   就不能利用这段代码了。。。

自由、民主、宪政!
2012-11-21 09:37
lwb603569640
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:283
专家分:436
注 册:2012-11-9
收藏
得分:0 
以下是引用zhu224039在2012-11-21 09:35:51的发言:

这个不同的机器 结果不一样?

这个系统的程序加载器   不同系统会把程序加载到不同的内存地址

自由、民主、宪政!
2012-11-21 09:38
lwb603569640
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:283
专家分:436
注 册:2012-11-9
收藏
得分:0 
以下是引用zhu224039在2012-11-21 09:36:27的发言:

  你64的 啊  那要修改下程序才可以啊
你把 int *larg_ptr=large_string  这代码改下
改成 long *larg_ptr=(long*)large_string
看看 long 固定是4个字节 32位的
或者修改下面的看看
char large_string[128*4];
void main(){
    char buffer[96*4];
    int i;
    int *larg_ptr=large_string;      //将char字符数组的首地址赋值给一个int 类型的指针,进行int 格式的引用,针对内存的读取方式改变
    for(i=0;i<32*4;i++)                 
        *(larg_ptr+i)=buffer;    // 将32位buffer的地址放入large_string 的整个数据块中
    for(i=0;i<strlen(shellcode);i++)
        large_string=shellcode;   //将shellcode的内容按照字节方式放进large_string中
    strcpy(buffer,large_string);        //字符的copy 将larg_string 数据块复制到buffer所指向的数据块中,按字符方式进行
    for(i=0;i<24;i++)
        printf("%d\n",((int*)buffer));      //这里是强制类型转换输出结果,意思是将char型指针内型强制转换成int型进行内存操作
        printf("%d\n",buffer);
}

淡定  windows7    wow64

自由、民主、宪政!
2012-11-21 09:41
快速回复:一段程序求姐
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018182 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved