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

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

11得票1回答
为什么无法通过“数据执行防止”修复Javascript shellcode漏洞?

"堆喷洒"维基百科文章表明,许多JavaScript漏洞利用涉及将shellcode定位在脚本的可执行代码或数据空间内存中,然后使解释器跳转到那里并执行它。我不理解的是,为什么不能将解释器的整个堆标记为“数据”,以防止DEP执行shellcode?同时,javascript衍生的字节码的执行将...

11得票3回答
能否让一个函数在堆栈上执行来自字符串的代码?

#include <stdio.h> int main(int argc, char** argv) { void (*p) (void); /* this obviously won't work, but what string could I put in ...

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

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

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

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

10得票4回答
缓冲区溢出和返回至libc攻击的区别

我想了解这两种攻击之间的确切区别。根据我所了解的: 缓冲区溢出:它覆盖栈上的ret地址,使其指向代码的另一部分,其中插入了恶意代码。因此,我们需要修改程序的源代码才能实际执行攻击。 返回到Libc:这里不是修改源代码,而是使用由C库提供的运行时函数调用(比如打开一个shell)。在这里,用...

10得票5回答
当我覆盖一个易受攻击程序的ret地址时,为什么会出现"Cannot find bound of current function"?

我希望为教育目的利用基于堆栈的缓冲区溢出。 有一个典型的函数从主函数中调用,该函数使用从程序输入的参数作为本地缓冲区,并将参数保存在其中。如果给定一个这样的输入:nops+shellcode+address_shellcode,我将利用它。 通过gdb调试,我找到了shell code的地...

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

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

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

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

9得票2回答
简单的缓冲区溢出和Shellcode示例

我一直在尝试运行Aleph One的示例,以获得BOF并打开shell。 这是Aleph One的论文:http://insecure.org/stf/smashstack.html 这是简单的C代码(几乎位于论文的中间位置): char shellcode[] = "\xeb\x2a\...