问题标签 [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 投票
2 回答
380 浏览

assembly - Shellcode 搜索字节字符串:0C330408Bh

我正在学习恶意软件(Blackhole Exploit)的工作原理,我从恶意代码中提取了 shellcode。除了搜索字节字符串之外,我想通了一切。谁可以帮我这个事?为什么这个 shellcode(大多数恶意 shellcode)会搜索这个特定的字符串?搜索代码如下:

0 投票
1 回答
2495 浏览

scanf - 插入外壳代码

我有一个小问题。

假设我在控制台应用程序中有以下代码:

我想利用这个漏洞并输入以下shell代码(MessageboxA):

如何通过控制台输入我的 shell 代码(十六进制值)?

如果我按原样输入输入,它会将数字视为字符而不是十六进制值。

非常感谢。

0 投票
1 回答
2445 浏览

security - 缓冲区溢出 - 程序在生成 shell 后终止

我一直在 FreeBSD 系统上试验缓冲区溢出。作为第一个实验,我试图让被利用的程序启动另一个进程(在这种情况下是 /bin/hostname)。一切正常,程序打印了主机名,然后终止。之后我试图让程序产生一个shell(即执行/bin/sh)。我假设这可以通过简单地交换代表要调用的程序的字符串来完成。当我尝试这个时,被利用的程序简单地退出,根据 gdb 它确实成功地产生了一个新进程(/bin/sh)。但是,没有生成任何外壳。然后我尝试了我的第一个漏洞利用并将 /bin/sh 文件移动到 /bin/hostname,仍然没有改变任何东西。我现在的问题是,从任何其他命令执行 /bin/sh 似乎有什么不同?

作为参考,对于 shell 生成尝试,我使用了以下 shellcode:

0 投票
3 回答
1720 浏览

c - 如何让这个简单的 shellcode c 程序从终端编译?

我正在尝试使用 ubuntu 12 上的终端进行编译:

我在http://www.securitytube.net/video/235上找到了这个例子,它也恰好是 Aleph One 在“为了乐趣和利润而粉碎堆栈”中使用的一个。我知道从那以后发生了很大的变化。在我使用的更简单的示例中:

gcc -ggdb -mpreferred-stack-boundary=2 -fno-stack-protector 文件名 filename.c

其他时候我可能会包含静态实用程序。在我尝试编译上面的 C 代码之前,它一直有效。我从终端收到的消息是:

我知道这是一个非常简单的示例,并且此错误可能是由 linux 中当前的标准安全措施引起的,但我想绕过它们来练习这个示例以及将来的更多内容。如果有人可以提供帮助,那将是“粉碎”。

干杯

0 投票
2 回答
984 浏览

c - C程序在执行shellcode时挂起/挂起

在运行程序时,它执行 sptr() 并挂在那里,可能是因为 shellcode 在内存中运行。printf("..") 永远不会执行。我的问题是我希望程序执行 printf()。

请帮忙 :)

回复 Eric Finn 和 Alvin Wong

我按照你们俩的指示进行了更改,我得到的错误是:

Microsoft Windows [版本 6.1.7600] 版权所有 (c) 2009 Microsoft Corporation。版权所有。

X:>"my program.exe" '»".¼' 不是内部或外部命令、可运行程序或批处理文件。必须显示此

char shellcode[] 有效。我之前已经编译成功了。

以下是带有恶意 shellcode 的原始代码,因此您的防病毒软件应该检测到它,只是为了验证你们的 shellcode 不是问题:

以上代码编译成功,运行完美

我将一些行更改为系统(shellcode)。它编译但不能正常运行

0 投票
1 回答
957 浏览

linux - connect() 函数的基本 Shellcode

我正在 Ubuntu 11.10 x86 上编写 shellcode,int 0x80 系统调用之前的寄存器如下所示:

这是为 connect() 系统调用设置的。ecx 寄存器中的值是一个参数数组,其中包含:

其中 0x00000009 是文件描述符,0x8e60583 是指向的服务器结构指针:

这是:

我知道文件描述符是正确的,并且在寄存器中设置的所有常量值(例如将 0x66 存储在 eax 中(socketcall 是 syscall #102)据我所知是正确的,但是当我运行代码时,它应该返回在 eax 寄存器中连接套接字 FD,它返回:

这显然是错误的。我做错了什么?

编辑:更改 inet_address 的字节序。

0 投票
2 回答
2465 浏览

shellcode - 小于 295 字节的 shell 生成 shellcode

我想要小于 295 字节的 shell 生成 shellcode。Metasploit 通常会生成(远)超过 300 字节的 shell 生成 shellcode。

或者无论如何我可以压缩生成shell的shellcode?

编辑:我需要这些用于 Windows XP/2003 的 shellcode。

0 投票
1 回答
6821 浏览

assembly - nasm 64位推送qword?

我似乎有一个有趣的问题,尽管我可能做错了什么。

我的问题是我试图将 AAAABBBBCCCC 推入堆栈,然后通过标准输出打印它们。但是,在我的 x86_64 环境中,似乎是push 0x41414141pushes 4141414100000000

所以下面的代码块:

Outputs AAAABBBB,我认为只有 8 个字节,实际上是我要求的 12 个字节。当通过管道传输到输出文件并在 hexedit 中查看时,我注意到它正在显示414141410000000042424242.

我认为push指令推动了一个dword价值。到一个qword大小的堆栈上?我这样想对吗?

这可以通过考虑额外的字节,并将我的长度更改为 20 来避免。但这会导致诸如sys_open.

所以我的问题是,我做错了什么?

0 投票
1 回答
331 浏览

gdb - Shellcode 在 gdb 中给出 SyntaxError

我正在尝试将 shellcode 作为 C 程序中的命令行参数传递。但是 gdb 一直给我 SyntaxError。我究竟做错了什么?

下面是C程序和shellcode的内容:

易受攻击的.c

我在 gdb 上运行的命令是:

0 投票
2 回答
1265 浏览

c - 缓冲区溢出的编译器艺术

现代编译器 GCC 非常强大,它甚至可以在编译阶段防止缓冲区溢出,从而使操作系统无法在堆栈空间上运行代码。

例如:

我能得到魔法 0x41414141 的唯一方法是设置 GCC 编译参数,例如:

(我在 ubuntu 10.04 x86 lucid 32bits box 上测试过)

有什么办法可以绕过 GCC 堆栈粉碎保护?