问题标签 [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.

0 投票
1 回答
5131 浏览

assembly - 如何解释以下 shellcode 漏洞利用的行为?

这是一个利用bufferoverflow漏洞的shellcode。它setuid(0)使用 设置并生成一个 shell execve()。以下是我解释它的方式:

任何人都可以清楚地解释整个步骤吗?

0 投票
2 回答
4163 浏览

assembly - 如何从机器代码中删除 NULL (00)?

我需要知道如何从机器代码中删除 null (00)。我用汇编语言编写了代码。它运行成功。我需要没有 NULL 的输出

以下输出是

如何删除 00,我做了更改,喜欢eax到bl blahahahahahaha ......但是不行,有人可以修改它...... albx

0 投票
2 回答
2836 浏览

windows - 需要简单的“Hello-World”,适用于 Windows 的无空 shellcode

我想通过将“Hello World”写入控制台(使用 Windows XP 32 位)来测试缓冲区溢出。shellcode 必须是无空的,才能通过“scanf”传递到我想要溢出的程序中。我发现了很多适用于 Linux 的汇编教程,但没有适用于 Windows 的。有人可以使用 NASM 引导我完成这个吗?哇!

0 投票
2 回答
6989 浏览

c - 为什么将“extern puts”转换为函数指针“(void(*)(char*))&puts”?

我正在查看来自Insecure Programming的示例abo3.c,但我并没有在下面的示例中摸索演员阵容。有人可以启发我吗?

那么 - system 和 puts 的铸造是怎么回事?他们都返回一个int,那么为什么将其设为无效呢?

我真的很感激对整个程序的解释,以便正确看待它。

[编辑]
谢谢你们的意见!

Jonathan Leffler,实际上代码“不好”是有原因的。它应该是可利用的,溢出缓冲区和函数指针等。mishou.org有一篇关于如何利用上述代码的博客文章。很多事情仍然在我的头上。

bta,我从上面的博客文章中收集到,强制转换系统会以某种方式阻止链接器将其删除。

尚不清楚的一件事是系统和放置地址都写入同一个位置,我认为这可能是gera 所说的“所以链接器不会删除它”。

当我们讨论函数指针的主题时,我想问一个后续问题,因为语法更清晰了。我正在查看一些使用函数指针的更高级的示例,并偶然发现了这种可憎的东西,取自一个托管 shellcode 的站点。

所以数组被强制转换为返回void、引用和调用的函数?这看起来很讨厌 - 那么上面代码的目的是什么?

[/编辑]

0 投票
2 回答
2054 浏览

linux - 格式化字符串错误——利用

我正在尝试利用我的格式字符串错误,该错误位于该程序中:

堆栈如下所示:

所以基本思想是编写一个 %x, %n, ... 的序列并将其提供给程序。我用来构建输入字符串的程序是:

我们可以看到我已经覆盖了地址:0xbffff048、0xbffff049、0xbffff04a、0xbffff04b,并使用以下十六进制:0x68、0xf0、0xff、0x1bf,这给了我们地址:0xbffff068(这是内存中 shellcode 的地址) . 所以想法是用这个地址覆盖 0x08048528 (EIP),所以当函数返回时它会跳转到那个地址。

我已经完成了所有这些并用调试器检查了这一切都很好。但是我仍然从 /lib/libc.so.6 得到 vfprintf() 中的分段错误。

有没有人知道发生了什么。我搞砸了什么吗?

谢谢

0 投票
3 回答
1807 浏览

python - 在python中评估shellcode的方法?

使用 C 程序评估一段示例 shellcode 并不复杂。它将涉及将 shellcode 存储在字符数组中,创建函数指针,类型转换指针并使其指向数组并调用函数(指针)。

这就是它的工作原理,假设您可以在以下位置执行内存nastycode[]

有什么方法可以使用 Python 代码做同样的事情吗?或者 Python 代码转换为字节码的事实是否使这样的努力变得不可能?

0 投票
4 回答
1706 浏览

c - 从 C 程序加载原始代码

我正在编写一个从文件加载和执行代码的程序。但我遇到了一个问题:“写”系统调用不起作用。代码成功加载并执行,但屏幕上不显示任何文本。

加载代码的程序:

我试图通过这个程序(test.s)执行的代码:

这是我如何编译它:

解决了,感谢@Christoph

有工作代码:

0 投票
3 回答
800 浏览

c - 这是缓冲区溢出的工作原理吗?

我想网上也有类似的问题和一些数据......但我想确保我正确掌握了这个概念,因为所有在线教程都太长了,而且专注于漏洞利用等。所以,我认为它是一个简单的缓冲区溢出的方式是这样的:

/////////////////////////////////////////

  1. 您发送一串参数/输入,如下所示:nop 指令(x90)+ shellcode + 一些文本 + 一些 nop 指令的地址。

  2. 如果字符串的长度正确,它将用一些 nop 指令的地址覆盖返回地址 ebp。一旦它跳到那里 - 然后它会跳过直到到达 shellcode ......剩下的就是历史了。

////////////////////////////////////////

我更像是一个 c++/php/c# 类型的人,而汇编和 c 超出了我的心理能力……哈哈……太认真了……或者开玩笑……上面的描述是不是有点意思?另外,据我所知,有一些针对缓冲区的保护措​​施。尽管我还不了解它们。防火墙将如何捕捉到这一点?

10倍!

0 投票
1 回答
1437 浏览

c - 缓冲区溢出攻击格式

通常我们都会看到基本的缓冲区溢出格式:- NOPs + shellcode + return_address

我们为什么不使用, NOPs + return_address + shellcode?我们将返回地址指向 shellcode 的开头?

我猜这是因为如果漏洞在 main() 中,我们可能会尝试在堆栈段之外写入数据。我对吗?如果我是,这是唯一的原因吗?

哦,是的,我不是指使用 return-to-libc、ptrace 等的其他类型的攻击;我只是想知道为什么最基本的缓冲区溢出攻击以第一种方式演示,而不是无处不在。

0 投票
4 回答
4245 浏览

c - Windows 上的缓冲区溢出攻击导致访问冲突

我刚刚开始研究缓冲区溢出攻击的工作原理,并尝试使用 Visual C 2010 在Windows 7上模拟攻击。缓冲区溢出攻击非常人为,它只是将返回地址覆盖为“缓冲区”局部变量的地址。缓冲区保存 shellcode 字符串。

无论我是否在 Visual Studio 2010 Debug 中运行程序,程序都会跳转到 shellcode并几乎开始执行它,但是我得到一个访问冲突错误,程序将不会继续执行 shellcode。

为什么我会收到此错误?这是对 Windows 中缓冲区溢出的某种保护吗?

如何程序在缓冲区中执行 shellcode?

编辑:

汉斯(答案)是正确的。这在 Windows Internals 5th 的安全章节中进行了讨论,错误的原因是 Microsoft 的Executable Space Protection实施。

如果这个问题对任何人有帮助,任何赞成票都将不胜感激。