| |
|
开发:
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 命令执行(二) |
三.常见的系统执行函数system,shell_exec,exec,popen,passthru 1.system 将 字符串 作为 OS命令 去执?,并且 自带输出功能。
2.?shell_exec() 通过 shell 环境执?命令,并且将完整的输出以字符串的?式返回。 只返回字符串,不会进?输出 该函数和 反引号 `` 的执?效果?致
3.?exec 将 字符串 作为 OS命令 去执?,但是?身 不带输出功能,需要写? 输出功能的代码 执??个外部程序
本函数执?输? command 的外部程序或外部指令。它的返回字符串只是外部程序执?后返回的最后一行;若需要完整的返回字符串,可以使? PassThru() 这个函数。
?4.popen 打开进程?件指针
打开?个指向进程的管道,该进程由派?给定的 command 命令执??产?。
5.passthru 执?外部程序并且 自带输出功能。
同 exec() 函数类似, passthru() 函数 也是?来执?外部命令( command )的。 当 所执?的 Unix 命令输出?进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数来替代 exec() 或 system() 函数。 常?来执?诸如 pbmplus 之类的可以直接输出图像流的命令。 通过设置 Content-type 为 image/gif , 然后调? pbmplus 程序输出 gif ?件, 就可以从 PHP 脚本中直接输出图像到浏览器。
四.其他命令执行函数 1.PHP:exec、shell_exec、system、passthru、popen、proc_open等 ? 2.ASP.NET:System.Diagnostics.Start.Process、System.Diagnostics.Start.Proces sStartInfo等 3.Java:java.lang.runtime.Runtime.getRuntime、java.lang.runtime.Runtime.exec 等 五.积累 1.PHP中不需要括号的函数
2.系统命令 (1)可以用? 匹配字符 (2)可以用;间隔两条命令 (3)$? //上一次命令执行成功为0,不成功为1 (4)env 查看本地变量 (5)``和$()可以代替shell_exec执行系统命令 //web396 (6)nl * 打开目录下所有文件 3.PHP:<?= ?>===<?php ?> 六.正则(安全的一道防线) 七.常见的绕过姿势 1.常用符号 (1)命令连接符 Windows和Linux都?持的命令连接符:|? ?||? ?&? ?&&
Linux特有: 分号(;)
(2)通配符
例:遇到system($_GET['c']);,则c可以传参
2.cat绕过 (1)more:一页一页的显示档案内容 (2)less:与 more 类似,但是比 more 更好的是,他可以[pg dn][pg up]翻页 (3)head:查看头几行 (4)tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示 (5)tail:查看尾几行 (6)nl:显示的时候,顺便输出行号 (7)od:以二进制的方式读取档案内容 (8)vi:一种编辑器,这个也可以查看 (9)vim:一种编辑器,这个也可以查看 (10)sort:可以查看 (11)uniq:可以查看 (12)file -f:报错出具体内容 (13)sed:一种编辑器,这个也可以查看 (14)grep 1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符 串的行。此时,可以使用如下命令: grep test *file (15)strings 3.空格绕过 (1)${IFS}替换
(2)$IFS$1替换 (3)${IFS替换 ${IFS}$9 ${IFS},$IFS,$IFS$9的区别,首先$IFS在linux下表示分隔符,只有cat$IFSa.txt的时候,bash解释器会把整个IFSa当做变量名,所以导致没有办法运行,然而如果加一个{}就固定了变量名,同理在后面加个$可以起到截断的作用,而$9指的是当前系统shell进程的第九个参数的持有者,就是一个空字符串,因此$9相当于没有加东西,等于做了一个前后隔离。 (4)%20替换 (5)< 和 <> 重定向符替换
(6)%09替换(需要php环境)
(7)%0a %0b %0c %0d 4. 敏感字符绕过 (1)变量绕过 1. a=c;b=at;c=fl;d=ag;$a$b $c$d 2.a=c;b=at;c=heb;d=ic;ab{c}{d}
(2)base64绕过
(3)单双引号
(4)反斜线 c\at? fl\ag (5)连接符 cat /etc/pass'w'd (6)hex编码 echo?"636174202f666c6167"?|?xxd?-r?-p|bash?==>cat?/flag (7)绕过ip中的句点
5.php include + 伪协议 绕过
伪协议:https://blog.csdn.net/weixin_44604541/article/details/110149949
通常都会用在文件包含上 1、php:// 输入输出流 (1)php://filter
有一些敏感信息会保存在php文件中,如果我们直接利用文件包含去打开一个php文件,php代码是不会显示在页面上的,这时候我们可以以base64编码的方式读取指定文件的源码。 用法
(2)php://input
可以用来执行命令,也可以写入木马 2、file:// 读取文件内容 注:输入php或JS文件,file://协议会执行该PHP文件里的代码而不是显示该内容 3、data:// 读取文件 条件:
使用方法
执行命令
base64绕过
条件
用法
5、zip:// 针对压缩包 条件:
注
6.扫描目录 (1)print_r扫描?录
(2)var_dump扫描?录
(3)var_export扫描?录
(4)glob?录遍历
|
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/14 14:30:07- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |