问题标签 [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.
assembly - Shellcode 搜索字节字符串:0C330408Bh
我正在学习恶意软件(Blackhole Exploit)的工作原理,我从恶意代码中提取了 shellcode。除了搜索字节字符串之外,我想通了一切。谁可以帮我这个事?为什么这个 shellcode(大多数恶意 shellcode)会搜索这个特定的字符串?搜索代码如下:
scanf - 插入外壳代码
我有一个小问题。
假设我在控制台应用程序中有以下代码:
我想利用这个漏洞并输入以下shell代码(MessageboxA):
如何通过控制台输入我的 shell 代码(十六进制值)?
如果我按原样输入输入,它会将数字视为字符而不是十六进制值。
非常感谢。
security - 缓冲区溢出 - 程序在生成 shell 后终止
我一直在 FreeBSD 系统上试验缓冲区溢出。作为第一个实验,我试图让被利用的程序启动另一个进程(在这种情况下是 /bin/hostname)。一切正常,程序打印了主机名,然后终止。之后我试图让程序产生一个shell(即执行/bin/sh)。我假设这可以通过简单地交换代表要调用的程序的字符串来完成。当我尝试这个时,被利用的程序简单地退出,根据 gdb 它确实成功地产生了一个新进程(/bin/sh)。但是,没有生成任何外壳。然后我尝试了我的第一个漏洞利用并将 /bin/sh 文件移动到 /bin/hostname,仍然没有改变任何东西。我现在的问题是,从任何其他命令执行 /bin/sh 似乎有什么不同?
作为参考,对于 shell 生成尝试,我使用了以下 shellcode:
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 中当前的标准安全措施引起的,但我想绕过它们来练习这个示例以及将来的更多内容。如果有人可以提供帮助,那将是“粉碎”。
干杯
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)。它编译但不能正常运行
linux - connect() 函数的基本 Shellcode
我正在 Ubuntu 11.10 x86 上编写 shellcode,int 0x80 系统调用之前的寄存器如下所示:
这是为 connect() 系统调用设置的。ecx 寄存器中的值是一个参数数组,其中包含:
其中 0x00000009 是文件描述符,0x8e60583 是指向的服务器结构指针:
这是:
我知道文件描述符是正确的,并且在寄存器中设置的所有常量值(例如将 0x66 存储在 eax 中(socketcall 是 syscall #102)据我所知是正确的,但是当我运行代码时,它应该返回在 eax 寄存器中连接套接字 FD,它返回:
这显然是错误的。我做错了什么?
编辑:更改 inet_address 的字节序。
shellcode - 小于 295 字节的 shell 生成 shellcode
我想要小于 295 字节的 shell 生成 shellcode。Metasploit 通常会生成(远)超过 300 字节的 shell 生成 shellcode。
或者无论如何我可以压缩生成shell的shellcode?
编辑:我需要这些用于 Windows XP/2003 的 shellcode。
assembly - nasm 64位推送qword?
我似乎有一个有趣的问题,尽管我可能做错了什么。
我的问题是我试图将 AAAABBBBCCCC 推入堆栈,然后通过标准输出打印它们。但是,在我的 x86_64 环境中,似乎是push 0x41414141
pushes 4141414100000000
。
所以下面的代码块:
Outputs AAAABBBB
,我认为只有 8 个字节,实际上是我要求的 12 个字节。当通过管道传输到输出文件并在 hexedit 中查看时,我注意到它正在显示414141410000000042424242
.
我认为push
指令推动了一个dword
价值。到一个qword
大小的堆栈上?我这样想对吗?
这可以通过考虑额外的字节,并将我的长度更改为 20 来避免。但这会导致诸如sys_open
.
所以我的问题是,我做错了什么?
gdb - Shellcode 在 gdb 中给出 SyntaxError
我正在尝试将 shellcode 作为 C 程序中的命令行参数传递。但是 gdb 一直给我 SyntaxError。我究竟做错了什么?
下面是C程序和shellcode的内容:
易受攻击的.c
我在 gdb 上运行的命令是:
c - 缓冲区溢出的编译器艺术
现代编译器 GCC 非常强大,它甚至可以在编译阶段防止缓冲区溢出,从而使操作系统无法在堆栈空间上运行代码。
例如:
我能得到魔法 0x41414141 的唯一方法是设置 GCC 编译参数,例如:
(我在 ubuntu 10.04 x86 lucid 32bits box 上测试过)
有什么办法可以绕过 GCC 堆栈粉碎保护?