问题标签 [exploit]

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 投票
3 回答
867 浏览

c - printf 在 cygwin 中执行 .exe 文件

我有一项任务要求我“破解”一段易受攻击的代码。片段:

最后,我发现它是如此简单,我担心我可能会得到一个差的成绩......我的解决方案:

  • 将可执行文件复制到主目录中...我使用了freecell.exe
  • $ ./VulnerableCode 8 `freecell.exe`

!!我在玩freecell。为什么这行得通?

0 投票
2 回答
1100 浏览

javascript - 任何人都可以去混淆这个漏洞吗?

由于我的 AV 软件的警告,我遇到了以下漏洞。它起源于在我的一个网站上提供横幅广告的广告服务器。

我已使用 Wget 检索内容并复制到 pastebin。

http://pastebin.com/m6fa38fac
[警告:链接可能包含恶意软件 - 不要从易受攻击的 PC 访问。]

请注意,您必须在 pastebin 上水平滚动,因为代码都在一行上。

任何人都可以找出漏洞利用的实际作用吗?

谢谢你。

0 投票
4 回答
2321 浏览

security - 关于漏洞利用写作的一些先进和现代的资源是什么?

我已经阅读并完成了Reversing: Secrets of Reverse EngineeringHacking: The Art of Exploitation。他们俩都以自己的方式进行了启发,但我仍然觉得其中提供的许多技术和信息在某种程度上已经过时了。

当臭名昭著的 Phrack 文章Smashing the Stack for Fun and Profit写于 1996 年时,就在我认为计算机安全“黄金时代”之前。

在随后的几年中编写漏洞利用相对容易。在受害者机器上执行缓冲区溢出和执行一些任意 shell 代码所需要的只是 C 和汇编的一些基本知识。

简单地说,事情变得复杂了很多。现在,安全工程师必须应对地址空间布局随机化 (ASLR)数据执行保护 (DEP)堆栈 Cookie、堆 Cookie 等问题。编写漏洞利用程序的复杂性至少上升了一个数量级。

如果不使用一堆标志进行编译以关闭现代保护,您将无法在今天找到的教程中运行大多数缓冲区溢出漏洞利用。

现在,如果你想编写一个漏洞利用程序,你必须想办法关闭 DEP,用你的 shell 代码喷洒堆数百次,并尝试猜测你的 shellcode 附近的随机内存位置。更不用说当今使用​​的托管语言的普遍性,当涉及到这些漏洞时,这些语言更加安全。

我希望将我的安全知识扩展到为十年老系统编写玩具漏洞之外的知识。面对我上面概述的所有保护措施,我无法找到有助于解决编写漏洞利用问题的资源。

有哪些更先进和流行的论文、书籍或其他资源专门用于应对为现代系统编写漏洞利用程序的挑战?

0 投票
9 回答
22582 浏览

php - PHP GET 变量数组注入

我最近了解到可以将数组注入 PHP GET 变量以执行代码?

.php?a[]=asd&a[]=asdasd&b[]=$a

那是给我的例子。我不知道它是如何工作的,并且想知道这是否可能?

0 投票
7 回答
7316 浏览

c - 编写安全 C 和安全 C 习语

“普通人不想自由。他只是想安全。” - HL 门肯

我正在尝试编写非常安全的 C。下面我列出了我使用的一些技术,并询问它们是否像我认为的那样安全。请不要犹豫,将我的代码/成见撕成碎片。任何能找到最微不足道的漏洞或教给我新想法的答案都将受到高度重视

从流中读取:

根据GNU C Programming Tutorial getline:

getline 函数将通过 realloc 函数根据需要自动扩大内存块,因此永远不会出现空间短缺——这是 getline 如此安全的原因之一。[..] 请注意,无论输入多长,getline 都可以安全地处理您的输入行。

我假设 getline在所有输入下都应该防止从流中读取时发生缓冲区溢出。

  • 我的假设正确吗?是否存在可能导致漏洞利用的输入和/或分配方案?例如,如果流中的第一个字符是一些奇怪的控制字符,可能是 0x08 BACKSPACE (ctl-H)。
  • 有没有做任何工作来从数学上证明 getline 是安全的?

Malloc 在失败时返回 Null:

如果 malloc 遇到错误 malloc 返回一个 NULL 指针。这带来了安全风险,因为仍然可以将指针算术应用于 NULL (0x0) 指针,因此维基百科建议

安全 sscanf:

使用sscanf时,我养成了将要提取的字符串大小分配给输入字符串的大小的习惯,希望避免出现溢出的可能性。例如:

因为 str1 和 str2 是 inputStr 的大小,并且不能从 inputStr 读取超过 strlen(inputStr) 的字符,所以考虑到 inputStr 的所有可能值导致缓冲区溢出,这似乎是不可能的?

  • 我对么?有没有我没有想到的奇怪的角落案例?
  • 有没有更好的方法来写这个?已经解决的库?

一般的问题:

虽然我已经发布了大量问题,但我不希望任何人都能回答所有问题。这些问题更像是我正在寻找的各种答案的指南。我真的很想学习安全的 C 思维方式。

  • 还有哪些其他安全的 C 习惯用法?
  • 我需要经常检查哪些极端情况?
  • 如何编写单元测试来强制执行这些规则?
  • 如何以可测试性或可证明正确的方式强制执行约束?
  • 任何推荐的 C 静态/动态分析技术或工具?
  • 您遵循哪些安全的 C 实践,您如何向自己和他人证明它们的合理性?

资源:

许多资源都是从答案中借来的。

0 投票
1 回答
5490 浏览

c++ - 使用 C++ 创建 Windows 帐户

我先简单介绍一下情况。我在一家游戏服务器租赁公司工作,该公司正在成为主要游戏引擎内部漏洞利用的受害者(来源)。基本上,开发人员在代码中留下了两个漏洞,一个是发送/接收文件,一个是让客户端运行插件。发生的事情是客户端正在运行插件,将自定义插件上传到服务器,然后服务器正在运行它们,结果创建了这些利用者用来访问机器的远程桌面帐户。(实际上 YouTube 上有一段视频,有人闯入我们的一个盒子,哈哈)

我花了一整天时间为此编写修复程序,方法是阻止服务器端的 SendFile() 和 RecieveFile() 函数,但是我的雇主要求在我这样做时,我使用该漏洞来访问他的盒子把密码丢了。所以我已经编写了所有必要的代码,除了我需要能够像这些利用者所做的那样创建一个临时帐户。因此,任何有关从 C++ 创建 Windows 帐户的代码的帮助将不胜感激。有人告诉我,谷歌上有很多样本,但显然谷歌技能达不到标准。

0 投票
3 回答
3784 浏览

php - PHP magic_quotes_gpc 漏洞

我被分配到我公司的一个遗留 web 应用程序中,经过一两天的源头搜索后,我发现了一个类似于以下内容的 SQL 注入向量:

我试图对此执行 SQL 注入测试,但由于 PHP 的magic_quotes_gpc模块被打开,它失败了。

我知道magic_quotes_gpc很脏,但是我们有数百行(如果不是数千行)类似于上面的代码。我们根本无法magic_quotes_gpc关闭,因为这会使像这样的代码很容易受到攻击。

我想知道上面的代码有多“可利用”,以及我们是否应该立即修复它,或者将修复它的任务包含在我们的其他重构任务中。

0 投票
5 回答
723 浏览

php - 检测 Web 应用程序中的漏洞以及如何进行

有哪些方法可以检测 PHP/MySQL Web 应用程序中的漏洞(检查 GET、POST、COOKIE 数组中的某些字符或代码片段/使用带有数据库的库,该数据库包含常见漏洞的所有模式(如果存在)? ),当检测到一个时我应该如何处理?

例如,如果有人尝试使用 GET 请求方法在我的 PHP/MySQL Web 应用程序中查找 SQL 注入,我是否应该将用户执行的操作存储在数据库中,让应用程序给我发送电子邮件,IP 禁止用户并向他/她显示一条消息“抱歉,我们从您的帐户中检测到有害行为,我们将对其进行审查。您的帐户已被禁用,并且您的 IP 地址可能会禁用某些功能。如果这是一个错误,请- 将所有详细信息发送给我们。”

谢谢。

0 投票
4 回答
1121 浏览

exploit - shellcode 被 \x20 截断

为什么我的 shellcode 在\x20操作码之后被截断,当它被字符串复制到第二个易受攻击的程序上时?

0 投票
6 回答
8368 浏览

c - 如何在 GCC、windows XP、x86 中编写缓冲区溢出漏洞利用程序?

上面的演示来自这里:

http://insecure.org/stf/smashstack.html

但它在这里不起作用:

我不明白为什么它是 8 虽然作者认为:

一个小数学告诉我们距离是 8 个字节。

我的 gdb 转储称为:

在我的情况下,距离应该是 - = 5,对吗?但它似乎不起作用..

为什么局部变量function需要56个字节?(sub $0x38,%esp