能力值:
( LV2,RANK:10 )
|
-
-
51 楼
感谢楼主的劳动,向楼主学习
|
能力值:
( LV5,RANK:60 )
|
-
-
52 楼
算了啦。大家都是朋友。不会放在心上的。
|
能力值:
( LV2,RANK:10 )
|
-
-
53 楼
新人围观围观
|
能力值:
( LV2,RANK:10 )
|
-
-
54 楼
谢谢,新手致谢.
|
能力值:
( LV9,RANK:270 )
|
-
-
55 楼
求pdf版 -------------
|
能力值:
( LV2,RANK:10 )
|
-
-
56 楼
|
能力值:
( LV5,RANK:60 )
|
-
-
57 楼
非常好的文章, 拜读ing。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
58 楼
谢谢LZ。。。能加你Q吗???我的284116775
|
能力值:
( LV5,RANK:60 )
|
-
-
59 楼
加你了哈。注意看哈。
|
能力值:
( LV2,RANK:10 )
|
-
-
60 楼
多谢楼主分享
|
能力值:
( LV2,RANK:10 )
|
-
-
61 楼
网上类似的教程很多,不过还是多谢楼主。
|
能力值:
( LV3,RANK:20 )
|
-
-
62 楼
有点像学习整理后手札
|
能力值:
( LV2,RANK:10 )
|
-
-
63 楼
有兴趣的话,可以拿去年的腾讯安全挑战赛第一题来试试!我就是通过那道题开始了解缓冲区溢出的。
|
能力值:
( LV2,RANK:10 )
|
-
-
64 楼
感觉好象很难学呀。。
|
能力值:
( LV5,RANK:60 )
|
-
-
65 楼
问个问题,
如果我针对漏洞函数
int defect( char* p )
{
char ch[4];
memcpy( ch, p, 1000 );
}
进行溢出, 那么我就需要修改defect()的返回地址, 也就是对ch[] 进行溢出, 即一般把 [ebp+4]地址修改成需要的地址,
但问题是:一般情况下函数以 push ebp; mov ebp, esp ; 开始 也就是直接针对ch溢出会破坏ebp链,导致不等执行到shellcode, 程序就down掉了,
请问这个问题需要如何绕过去呢?
thx
|
能力值:
( LV2,RANK:10 )
|
-
-
66 楼
这个不错,新手学习一下,楼主写得很用心
|
能力值:
( LV2,RANK:10 )
|
-
-
67 楼
[QUOTE=levizhou;945107]问个问题,
如果我针对漏洞函数
int defect( char* p )
{
char ch[4];
memcpy( ch, p, 1000 );
}
进行溢出, 那么我就需要修改defect()的返回地址, 也就是对ch[] 进行溢出, 即一般把 [ebp+4]地...[/QUOTE]
破坏了ebp值又不会触发异常,除非是ebp被改成指向不可访问的内存页了,在shellcode里触发访问异常。高级些的可以在shellcode里还原ebp、esp,普通的就在shellcode循环不出来就行了。
话说那老师确实讲的不错,lz码字也很积极
|
能力值:
( LV2,RANK:10 )
|
-
-
68 楼
谢谢LZ分享,新手学习了,万分感谢
|
能力值:
( LV5,RANK:60 )
|
-
-
69 楼
兄弟, 如果ebp破坏后还如何能执行植入的shellcode呢,请看清楚问题
看lz的sample code 是类似:
int defect( char* p )
{
__asm mov dword ptr [ebp+0x04], 0x7ffa4512;
char ch[4];
memcpy( ch+0x0c, p, 1000 );
}
大体上来说基本上不可能有哪台服务器出现这种漏洞的,
我的问题是如何通过p溢出来达到攻击的目的, 假设p中含有一段shellcode
漏洞代码为
int defect( char* p )
{
char ch[4];
memcpy( ch, p, 1000 );
}
==============================update=====================
debug模式下能够适当初始化p可以执行到自己的shellcode, 可是会产生一个异常, 也就是不完美
|
能力值:
( LV2,RANK:10 )
|
-
-
70 楼
[QUOTE=levizhou;945446]兄弟, 如果ebp破坏后还如何能执行植入的shellcode呢,请看清楚问题
看lz的sample code 是类似:
int defect( char* p )
{
__asm mov dword ptr [ebp+0x04], 0x7ffa4512;
...[/QUOTE]
#include <stdio.h>
#include <memory.h>
int defect(char* p);
void printself();
int main(int arg,char *arv[])
{
char shellcode[100]="1234567812345678";
int *pint=(int *)shellcode;
pint[1]=0x3D0000;//新EBP值
pint[2]=(int)printself;//shellcode地址
return defect(shellcode);
}
int defect(char* p)
{
char ch[4];
memcpy( ch,p,100);
return 0;
}
void printself()
{
printf("I am Shellcode\n");
while(1);
}
不多说了,拿去编译下吧,release编译,禁用优化。 test.exe.txt
|
能力值:
( LV2,RANK:10 )
|
-
-
71 楼
学习一下。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
72 楼
排版很好,楼主真是好人!学习了~
|
能力值:
( LV5,RANK:60 )
|
-
-
73 楼
[QUOTE=灭绝雪翁;945691]#include <stdio.h>
#include <memory.h>
int defect(char* p);
void printself();
int main(int arg,char *arv[])
{
char shellcode[100]="123456781...[/QUOTE]
thx, 我的也调通了,
之前是因为debug build 导致的问题
|
能力值:
( LV2,RANK:10 )
|
-
-
74 楼
不错啊不错!收藏个先
|
能力值:
( LV2,RANK:10 )
|
-
-
75 楼
asdfeasdfasdv
|
|
|