8得票4回答
使用缓冲区溢出执行Shell代码

最近我一直在学习计算机安全,遇到了一些问题,特别是这个问题让我有些困扰。 我需要溢出一个带有固定缓冲区的函数,以便在文件shellcode中执行shellcode。这个函数非常简单: void vuln(char *str) { char buf[64]; strcpy(b...

8得票1回答
在汇编语言中,正确调用带有参数的execve应该如何实现?

我正在尝试使用 execve 执行以下操作:/ bin // nc -lnke / bin / bash -p 4444 阅读 execve 的手册时,我看到以下要求: int execve(const char *filename, char *const argv[], ...

26得票5回答
试图执行堆栈破坏导致了段错误

我正在尝试在C语言中完成Smashing the Stack for Fun and Profit的一个示例,但目前遇到了一些困难,以下是代码(我的机器是64位Ubuntu): int main() { int x; x = 0; func(1,2,3); ...

19得票2回答
一个简单的栈溢出的Shellcode:在执行execve("/bin/sh")后,利用的程序直接终止。

我在Linux (amd64)上玩弄了缓冲区溢出,并尝试利用一个简单的程序,但失败了。我禁用了安全功能(用sysctl -w kernel.randomize_va_space=0来禁用地址空间布局随机化和bios中的nx位)。它跳转到栈并执行shellcode,但没有启动shell。exec...

10得票1回答
需要利用缓冲区溢出漏洞,但在执行利用代码后无法弄清楚如何修复堆栈的损坏?

我要利用的函数基本上是这样的:int getbufn() { char buf[512]; Gets(buf); return 1; } 当我运行主程序时,该函数会执行5次,每次buf的位置和%ebp的位置都会改变。我的任务是将一个特定的十六进制值,比如0xFFF...

10得票2回答
将shellcode声明为char[]数组和char*有什么区别?

大家好, 我正在尝试学习基本的shell编程,并且我遇到了一些奇怪的事情,希望有人能够解释一下。我按两种方式编译了以下代码:将shellcode声明为一个数组和char*。当我将shellcode声明为数组时,Linux检测到我正在尝试执行数据,并且在第一条指令上引发了一个段错误。然而,当我...

11得票1回答
gcc的execstack标志允许哪些情况,并如何强制执行?

我这里有一些示例代码,我正在使用它们来理解初学者CTF的一些C语言行为:// example.c #include <stdio.h> void main() { void (*print)(); print = getenv("EGG");...

11得票4回答
从C程序加载原始代码

我正在编写一个从文件加载和执行代码的程序。 但是我遇到了一个问题:"write"系统调用不起作用。 程序成功加载并执行,但在屏幕上没有显示任何文本。 加载代码的程序:#include < stdio.h > #include < stdlib.h > int mai...

9得票2回答
编写Shellcode:为什么我的Shellcode无法运行?

我正在编写一个shellcode,用来利用使用puts函数的目标程序。该程序看起来像这样: #include <stdio.h> main() { char buf[123]; puts(gets(buf)); } 我想做的是溢出这个缓冲区并使用一些参数调用e...

10得票5回答
Python中类似Perl的Pack('V')函数是什么?

最近我一直在进行漏洞开发以准备参加培训课程,但是在教程中遇到了问题。我一直按照能找到的所有教程来操作,使用Python而不是教程中所用的语言,因为我更喜欢Python。我尝试对所有内容进行交叉编码,但无法弄清如何交叉编码Perl的Pack()函数。 TL;DR: 我正在尝试将此转换为Pytho...