WEB安全之代码执行漏洞
Posted AlexD190518
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WEB安全之代码执行漏洞相关的知识,希望对你有一定的参考价值。
代码执行漏洞
应用程序在调用一些能够将字符串转换为代码的函数(如php中的eval)时,没有考虑用户是否控 制这个字符串,将造成代码执行漏洞。
一些代码执行命令函数
eval()
assert()
call_user_func()/call_user_func_array()
create_function()
usort()/uasort()
preg_replace()
array_map()
$php代码
用法
eval()
#传入的必须是有效的 PHP 代码。所有的语句必须以分号结尾。
return #语句会立即中止当前字符串的执行。
#代码执行的作用域是调用 eval() 处的作用域。因此,eval() 里任何的变量定义、修改,都会在函数结束后被保留。
assert()
require()
require_once()
popen() #函数打开进程文件指针。
fgets() #函数从文件指针中读取一行。
fpassthru() #函数从打开文件的当前位置开始读取所有数据,直到文件末尾(EOF)
fgetcsv() #函数从文件指针中读入一行并解析 CSV 字段
fgetss() #函数从打开的文件中读取一行并过滤掉 html 和 PHP 标记。
fscanf() #函数根据指定的格式对来自打开的文件的输入进行解析。
parse_ini_file() #函数解析一个配置文件(ini 文件),并以数组的形式返回其中的设置。貌似无法成功
一些读取文件的函数
highlight_file() #highlight_file() 函数对文件进行语法高亮显示
show_source() #show_source() 函数对文件进行语法高亮显示。是highlight_file的别名
php_strip_whitespace()#用于返回已删除 PHP 注释以及空白字符的源代码文件,需要配合
输出使用
file_get_contents() #把整个文件读入一个字符串中。
readfile() #函数读取一个文件,并写入到输出缓冲。
file() #函数把整个文件读入一个数组中。
fopen() #fopen — 打开文件或者 URL,配合fread()使用
fread() #函数读取文件
include() #获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件
中。
include_once()
用法
highlight_file(("flag.txt"));
show_source(("flag.txt"));
echo (php_strip_whitespace("flag.txt"));
echo file_get_contents(("flag.txt"));
readfile(("flag.txt"));
var_dump(file(("flag.txt"))); #用print_r也可以打印数组
print(fread(fopen("flag.txt","r"),filesize("flag.txt"))); #需要配合输出函数使用
include("flag.txt");
fread(popen("flag.txt","r"),filesize('flag.txt')); #貌似不用输出函数也可以
echo fgets(fopen("flag.txt","r"),1024); #需要配合输出函数使用
fpassthru(fopen("flag.txt","r"));
var_dump(fgetcsv(fopen("flag.txt","r"))); #需要配合打印数组函数使用
echo fgetss(fopen("flag.txt","r")); #需要配合输出函数使用
var_dump(fscanf(fopen("flag.txt","r"),"%s")); #需要配合打印数组函数使用
实例-ctfshow-web58
源码
表面上啥都没有过滤,其实已经通过disable_functions过滤了执行系统命令的函数。(别问为什么知道的,因为我尝试过了 QAQ....)
此时就可以通过eval来传入危险函数,从而获取到系统里面的flag
首先通过post提交参数c,然后用scandir来查看当前目录下的文件,用var_dump()显示出来
发现当前目录下有个flag.php 接下来用高亮函数把flag.php 显示出来就行了
一般代码执行的漏洞,基本上都是执行系统命令函数被禁用,又可以使用执行代码函数命令,就可以通过执行代码来把想要的文件显示出来
以上是关于WEB安全之代码执行漏洞的主要内容,如果未能解决你的问题,请参考以下文章