php代码审计-重点函数

漏洞关键字

SQL注入:
 select insert update mysql_query mysqli等
文件上传:
 $FILES,type="file",上传,move_upload_file()等
 XSS跨站:
 print print_r echo sprintf die var_dump var_export等
文件包含:
 Include include_once require require_once等
代码执行:
 eval assert preg replace call user func call user func array等
命令执行:
 system exec shell_exec `` passthru pcntl_exec popen proc_open
变量覆盖:
 extract() parse_str() importrequestvariables() $$等
反序列化:
 serialize() unserialize() _construct _destruct等
通用关键字:
 $GET $POST $REQUEST $FILES $SEVER

1. PHP操作数据库函数

mysqli_connect()
//建立与MySQL数据库的连接
mysqli_connect_errno()
//判断连接数据库是否成功
mysql_connect_error()
//输出连接错误的错误信息
mysql_select_db()
//设置连接的数据库
mysqli_set_charset()
//设置与MySQL数据库传送数据时使用的字符集
mysqli_query()
//执行并发送SQL语句
mysqli_affected_rows()
//获得前一次操作的所影响的行数
mysqli_fetch_all()
//从结果集中取出所有行作为关联或索引、混合数组
mysqli_fetch_assoc()
//从结果集中取出所有行作为关联数组
mysqli_fetch_row()
//从结果集中取出所有行作为索引数组
mysqli_fetch_array()
//从结果集中取出所有行作为混合数组
mysqli_insert_id()
//获得上一次insert操作的id
mysqli_num_rows()
//获得结果集中的记录条数
mysqli_num_rows()
//获得结果集中的记录条数
mysqli_close()
//关闭数据库连接

2. HP文件上传函数/文件操作函数

deldot
in_array
intval
strrchr
strtolower
strrpos
str_ireplace
strstr
substr
trim
file_put_contents()
//函数把一个字符串写入文件中。
fputs()
//函数写入文件
copy — 拷贝文件
delete — 参见 unlink 或 unset
fflush — 将缓冲内容输出到文件
file_get_contents — 将整个文件读入一个字符串
file_put_contents — 将一个字符串写入文件
fputcsv — 将行格式化为 CSV 并写入文件指针
fputs — fwrite 的别名
fread — 读取文件(可安全用于二进制文件)
fscanf — 从文件中格式化输入
fwrite — 写入文件(可安全用于二进制文件)
move_uploaded_file — 将上传的文件移动到新位置
readfile — 输出文件
rename — 重命名一个文件或目录
rmdir — 删除目录
unlink — 删除文件

3. PHP命令执行命令注入函数

popen()
pcntl_exec()
escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数
escapeshellcmd — shell 元字符转义
exec — 执行一个外部程序
passthru — 执行外部程序并且显示原始输出
proc_close — 关闭由 proc_open 打开的进程并且返回进程退出码
proc_get_status — 获取由 proc_open 函数打开的进程的信息
proc_nice — 修改当前进程的优先级
proc_open — 执行一个命令,并且打开用来输入/输出的文件指针。
proc_terminate — 杀除由 proc_open 打开的进程
shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。
system — 执行外部程序,并且显示输出

4. PHP代码执行函数

eval()
//eval() 函数把字符串按照 PHP 代码来计算,如常见的一句话后门程序:<?php eval($_POST[cmd])?
assert()
//与eval类似,字符串被 assert() 当做 PHP 代码来执行
preg_replace()
//preg_replace()函数原本是执行一个正则表达式的搜索和替换,但因为存在危险的/e修饰符,使 preg_replace() 将 replacement 参数当作 PHP 代码
create_function()
//create_function主要用来创建匿名函数,如果没有严格对参数传递进行过滤,攻击者可以构造特殊字符串传递给create_function()执行任意命令
array_map()
//array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。 回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致
call_user_func()/call_user_func_array ()
//call_user_func — 把第一个参数作为回调函数调用,其余参数是回调函数的参数。
//call_user_func_array — 调用回调函数,并把一个数组参数作为回调函数的参数
array_filter()

//array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )
//依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。
usort()、uasort()
//usort() 通过用户自定义的比较函数对数组进行排序。
//uasort() 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联 。

5. PHP输出/打印函数

echo()
print()
printf()
sprintf()
print_r()
var_dump()
die()

6. PHP文件下载

fopen()
//读取文件
readfile()
file_get_contents()
highlight_file()  

7. PHP魔术方法

__construct()//每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作

__destruct()//某个对象的所有引用都被删除或者当对象被显式销毁时执行

__call() //在对象上下文中调用不可访问的方法时触发

__callStatic() //在静态上下文中调用不可访问的方法时触发

__get() //用于从不可访问的属性读取数据

__set() //用于将数据写入不可访问的属性

__isset() //在不可访问的属性上调用isset()或empty()触发

__unset() //在不可访问的属性上使用unset()时触发

__sellp() //使用serialize时触发

__wakeup() //使用unserialize时触发

__toString() //把类当作字符串使用时触发

__invoke() //当脚本尝试将对象调用为函数时触发

__set_state()//当调用 var_export() 导出类时,此静态方法会被自动调用。

__clone()//当使用 clone 复制一个对象时自动调用

__debuginfo()//使用 var_dump() 打印对象信息时自动调用
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,874评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,102评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,676评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,911评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,937评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,935评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,860评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,660评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,113评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,363评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,506评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,238评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,861评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,486评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,674评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,513评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,426评论 2 352

推荐阅读更多精彩内容