问题标签 [shellcode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 缓冲区溢出和返回libc攻击的区别
我想了解这两种攻击之间的确切区别。从我读到的:
缓冲区溢出:它覆盖堆栈上的 ret 地址以指向插入恶意代码的代码的另一部分。如此有效——这里我们需要修改程序的源代码才能真正进行攻击。
返回到 Libc——这里不是修改源代码,而是使用 C 库提供的运行时函数调用(比如打开一个 shell)。这里用于函数调用的参数也在覆盖缓冲区中传递,在堆栈的 ret 部分之后结束。
以上描述准确吗?
还有另一个相关的问题 - 是否有可能在不实际修改原始程序的源代码的情况下进行缓冲区溢出攻击?可能是如果我们编写一个新程序并允许它修改内存的某些部分(这是原始程序损坏堆栈中的新 ret 地址)。再说一次,我认为这可能是不可能的,因为内核中的进程之间提供了内存保护。
shell - 如何将 \x00 作为参数传递给程序?
我有一个小程序,我希望将 shellcode 作为参数传递。在 shellcode 中,有必要传递 \x00。我尝试了以下命令:
但是 \x00 根本没有被注册!传递给程序的参数是“\x01\x9c\xff\xbf”。
我认为这不是 python 的问题,而是传递参数的 shell 的问题。我正在使用 bash shell。
现在,我如何强制 shell 传递参数 '\x00'?
谢谢和问候,
Hrishikesh Murali
linux-kernel - Linux 针对执行 shellcode 的安全措施
我正在学习计算机安全的基础知识,并且正在尝试执行我编写的一些 shellcode。我按照这里给出的步骤
http://dl.packetstormsecurity.net/papers/shellcode/own-shellcode.pdf
http://webcache.googleusercontent.com/search?q=cache:O3uJcNhsksAJ:dl.packetstormsecurity.net/papers/shellcode/own-shellcode.pdf+own+shellcode&cd=1&hl=nl&ct=clnk&gl=nl
由于我让暂停程序工作,我只是将 objdump 输出复制到 ac 文件。
测试.c:
但这会产生段错误。现在,这只能归因于 Arch Linux (?) 的安全措施。那么我怎样才能让它工作呢?
security - shellcode nop sleds 的 NOP 替代品
有谁知道任何提供 NOP 操作码替代指令的在线资源?
像'xchg ax,ax'之类的。我很确定还有一个工具,有人可以指点我那个方向吗?
assembly - 需要利用缓冲区溢出。在执行漏洞利用代码后无法弄清楚如何破坏堆栈?
基本上我正在利用的功能是这样的:
当我运行主程序时,该函数执行 5 次,每次 buf 的位置发生变化,%ebp 的位置也发生变化。我应该做的是将一个特定的十六进制值,比如说 0xFFFFFFFF,放入一个变量中,并且主程序每次都会检查该变量是否存在。如果是,它会再次执行,直到所有 5 次都完成并且程序安静地退出。
我遇到的问题是,在检查十六进制值之前,检查另一个恒定值,比如说 0x12345678。如果我损坏了 0x12345678 并且它不存在,程序就会在我身上爆炸。
我发现 0x12345678 存储在 -0x10(%ebp) 中,所以我知道它是基于 %ebp 的,而且我每次都知道 %ebp 的地址,但我只能让漏洞利用第一次工作。我通过基本上 nopsled-ing 496 字节和字节格式的机器代码来做到这一点:
最终是 5 个字和一个用于返回 long 的字节,我用 0x313131 填充以使其长 6 个字。在这一点上,我的漏洞利用字符串是 520 字节长,这正是缓冲区低于 %ebp 的长度,所以我添加了旧 ebp 的地址和我的 nopsled 内某处的地址,覆盖了 %ebp 的当前值以及返回getbufn 的地址。
问题是当程序第二次执行时,%ebp 位于比其先前地址低 0x10 的地址中,因此我的不破坏 %ebp 的方法不起作用,并且 main 检测到 0x12345678 不在 -0x10(%ebp) 处。如何清除 %ebp?
security - return-to-libc 漏洞利用:在哪里为 system() 调用提供参数?
我正在尝试编写对 libc 漏洞利用的返回,但无法弄清楚我应该在堆栈中的哪个位置放置我的system()
调用的参数。
易受攻击的功能是
此函数的堆栈将如下所示:
我知道我必须用system()
调用地址覆盖返回地址,但是我应该将其参数的地址放在哪里,为什么?
谢谢。
c++ - 运行shellcode + vs2010
我刚刚尝试了以下代码片段来进行 shellcode 测试:-
我在编译时遇到构建错误:-
有什么明显的我做错了吗?
c - 学校实验室 Shellcode BufferOverflow 的分段错误
我按照教授的指示运行 FedoraCore6。我试图简单地运行由实验室说明提供的这个 shellcode,但我不断收到分段错误。我们被告知我们可以使用命令 gcc-fno-stack-protector call_shellcode 在关闭堆栈保护的情况下进行编译.c 无论我只是使用 gcc -o shell call_callshellcode.c 编译代码还是使用 -fno-stack-protector 命令我在启动代码时遇到分段错误而不是调用 shell ..有什么帮助吗?所以我得到了这个实验室的代码,如下所示:
macos - 解决黑客问题:剥削的艺术
我最近买了这本书,书名是:黑客:剥削的艺术(第 2 版),它最近一直困扰着我。无论如何,使用其中一个示例 firstprog.c :
它让你用 gcc 编译它(显然 :3 ),然后使用 objdump (为此,我只使用了 gobjdump,找不到 OS X 的 objdump )将输出通过 main.: 管道输出到 grep.: 作为正则表达式并显示前 20线。然后用 gdb 调试并在 main 处中断。这是我的主要问题:所有内存地址都不同!比如书中的eip是:0x804837a。但是对于我的电脑,它是:0x100000ee8我认为这只是因为我使用的是 64 位操作系统,但是当我使用 32 位版本的 Darwin 启动时,我得到了相同的结果。如果有人知道这个问题是什么,我将不胜感激。如果这真的很愚蠢,让我休息一下,我刚满 14 岁 :)
linux - 为什么汇编 shellcode 的两种变体不能以相同的方式工作?
我最近阅读了 Aleph One 的为了乐趣和利润而粉碎堆栈,并且一直在看“The Shellcoder's Hanbook”。我正在玩弄以下汇编代码:
当我使用 GDB 时,每次尝试写入时都会出现段错误:
但是,当我运行它时,我可以弹出一个根 shell 而不会出现段错误:
本质上他们在做同样的事情(是的,我知道他们不是真的,但我试图在两者中弹出一个 root shell)。我在 OpenSuse11.4 上运行,并且出于学习目的而关闭了堆栈随机化 (ASLR)。有任何想法吗?