目录
一、漏洞形成条件
1. 可控变量
我们的参数值可以正常传递到参数中,而没有被过滤掉
2. 漏洞函数(常见)
代码执行漏洞常见函数
(1)eval 将字符串当做php去执行
(2)assert
assert(mixed $assertion
, Throwable $exception
= ?): bool
如果 assertion
是字符串,它将会被 assert() 当做 PHP 代码来执行。
(3)preg_replace() , call_user_func() , call_user_func_array() , array_map()
命令执行漏洞常见函数
(1)system(),exec(),shell_exec(),passthru(),pcntl_exec(),popen(),proc_open(),另外,反引号 ` 也可以执行命令,只不过用的是shell_exec()函数
二、墨者学院命令执行漏洞
1.判断操作系统
2.查看页面源代码,有js过滤
3.在请求包中做文章
编辑并重发
得到一个新的response
四、查看key_php得到key
三、php代码分析溯源
1.base64_decode和gzinflate
base64_decode 对字符串进行解码
gzinflate 这是一个解压函数
2.执行页面的php代码
这里用到了反引号,是将request接受的参数值当做命令来执行了
3.提交参数a;
(1)浏览根目录
(2)http://124.70.71.251:49575/f.php?a=tac < key_18792317504155.php 查看其中的密码