问题标签 [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 - Shellcode:执行 2 次 execve() 调用
我正在尝试在汇编中编写 shellcode。我需要执行一个/usr/bin/killall
命令和一个/usr/bin/wget
命令。我有两个命令在execve()
系统调用的 shellcode 中完美运行。但是现在我想将这两个结合起来,但是这是不可能的,因为程序在execve()
执行第一次调用时就退出了。(来自execve()
:的手册页execve()
不会返回成功)。
如何进行 2 次execve()
通话?还是有另一种方法可以从同一个 shell 代码/usr/bin/killall
中调用两者?/usr/bin/wget
提前问候和感谢!
c - 程序在 GDB 中的行为不同?
我从smashthestack得到这段代码:
我使用这个shellcode执行这个程序:
在 GDBrun < /tmp/in
中,一切正常: (gdb) run < /tmp/wliao_in
但实际上,它不是:
我不明白这两者有什么不同?
assembly - pass arguments to execve program in shellcode
I'm having a go at learning assembly and writing shellcode. I have a question about execve
and passing arguments to the program it will execute.
I have working code to execute a bash shell but am unsure of the input format of execve
to pass additional arguments to it. Can I do stdin stdout redirects too? I wanted to create a reverse tcp connection with this type of command line:
Should the arguments be separated with NULL's? I got it to execute a shell but it didn't connect back to the listening nc.
I know this is an unusual way of doing this but I just wanted to try something different :-)
Cheers
c - 使用缓冲区溢出执行shell代码
我最近一直在学习计算机安全,遇到了一些问题,尤其是在这个问题上我遇到了一些麻烦。
我得到了一个带有固定缓冲区的函数,我需要溢出才能在文件 shellcode 中执行shellcode。该功能非常简单:
我最初的猜测是修改函数的返回地址eip以定位和执行 shellcode 文件中的内容,但我意识到我没有可以用十六进制值表示的文件地址。我很确定我需要操纵返回地址,所以目前我正在调用的是:
我的输出是:
在我用附加地址替换 edp 的地址并到达返回地址后,python 脚本只需打印 72 个字母 A 以将缓冲区溢出到edp和eip的点,并准备好对其进行操作。非常感谢任何帮助,谢谢!
c - mcrypt 上的分段错误(可能与缓冲区有关)
我正在尝试使用 AES 在 c 中构建自己的加密器来加密 shellcode。现在我已经在一个程序中制作了加密器的 PoC,可以在下面找到:
我的目标是获取加密的 shellcode,解密并运行它。但是,当我尝试使用该mcrypt_generic_init(td, key, key_len, IV);
函数初始化 mcrypt 时,似乎遇到了分段错误。我真的不确定是什么导致了分段错误。如果有人有想法?
shellcode - shellcode 中的空字节
通过维基百科上的shellcode文章,它给出了一个示例,如下所示:
为了使上述指令为空,他们将其重写如下:
第一条指令中的空字节在哪里?转换后的指令如何没有空字节?
stack - Shellcode中的堆栈内存地址
我在这里阅读了一篇关于编写 shellcode(使用堆栈方法执行)的基本文章:http: //hackoftheday.securitytube.net/2013/04/demystifying-execve-shellcode-stack.html
在第 6 步中:它推送一个空字符,因为字符串“/bin/sh”是空终止的。之后,它以相反的顺序推送字符串“/bin/sh”
为什么字符串以相反的顺序推入堆栈,为什么终止字符串的空字符在将字符串推入堆栈“之前”被推入?
c - C程序中的Shellcode
在Demystifying the Execve Shellcode中解释了一种编写 execve shellcode 的方法:
线路int (*ret)() = (int(*)())code;
有什么作用?
c++ - 重写一个小的 execve shellcode
通过http://hackoftheday.securitytube.net/2013/04/demystifying-execve-shellcode-stack.html
execve
我理解调用并试图重写它的 nasm 程序。
一些背景资料:
因此,(函数调用eax = 11
号execve
)应该ebx
指向_ _ _ )。char* filename
ecx
argv[]
ebx
*filename
edx
envp[]
null
原始nasm代码:
堆栈如下:
现在我试图通过减少一些指令来优化它。我同意直到mov ebx, esp
代码保持不变。但是,由于ecx
需要指向ebx
,我可以重写代码如下:
但是,当我运行重新编写的代码时出现分段错误。
我的堆栈如下:
任何想法为什么重新编写的代码不起作用?我也运行过 gdb 并且地址值是根据我的想法,但它不会运行。
linux - 用于获取 shell 的 shellcode,但发生了段默认值
让我先向您展示我的代码。
它是一个 shell-spawning shellcode,代码来自一本书 - “shellcoder's handbook”。我只是复制书中的代码,并用 gcc(gcc shellcode.c -o shellcode)编译它。和我的 gcc 版本是 4.7.2,我的机器是 X86,但我在 debian 上运行它,我只是得到分段错误。
readelf -l 的输出是:
好吧,够了吗?