1.搜索关键字如select from、update、insert、delete
、mysql_connect
、mysql_query
、mysql_fetch_now
等关键字可定向挖掘SQL注入漏洞。php
2.urlencode、urldecode、rawurlencode、rawurldecode
区别。使用不当可致使宽字节注入。
除了 -_.
以外的全部非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。urlencode
和rawurlencode
的区别:
1)urlencode
将空格则编码为加号(+)
2)rawurlencode
将空格则编码为加号(%20)
payload:mysql
.../1.php?id=1df%' union select 1,database()# '单引号自动转义在前面加了/'---通过urlencode洗礼后也就是5c% 若是php链接数据库的时候设置了set character_set_client=gbk,就是告诉mysql服务器 客户端 数据来源是GBK格式 这时df%5c%会被decode成一个汉字。
宽字节注入搜索关键字SET NAMES、character_set_client=gbk、mysql_set_charset('gbk')
sql
payload:%2527 %25进行解码后为% 再次解码%27结果为'(单引号)
原理是当某处使用了urldecode()
或者rawurldecode()
函数,当咱们提交参数到WebServer的时候。WebServer会自动解码一次。而后在通过函数的二次解码。生成单引号引起注入。
能够搜索这两个函数的关键词进行定位。数据库
若是magic_quotes_gpc=On(php6以上没有此选项)
PHP解析器就会自动为post、get、cookie过来的数据增长转义字符,和函数addslashes功能差很少数组
(php4.0.3版本以上才存在)
做用是转义特殊字符,包括:安全
\x00 \n \r \ ' " \x1a
move_uploaded_file($temp_file, $img_path) trim($file_name)#移除字符串两侧的空白字符或其余预约义字符 strrchr($file_name, '.')#返回'.'在$file_name最后出现的位置到$file_name字符串末尾这一段字符串 strtolower($name)#转换为小写 str_ireplace('a','',$name)#将$name中的'a'/'A'(不区分大小写)替换成''(也就是删除) in_array($name,$array)#查询$name是否在$array中 substr($string,$start,$length)#$start(0,-1),均是从左往右 strrpos($name,'.')#返回'.'在$name字符串中最后出现的位置(从0开始) fopen($filename, "rb")#打开$filename二进制只读模式 fread($filbit,2)#只读两个字节 unpack("C2chars", $bin)#将字节转化为字节二进制的数组 intval($strInfo['chars1'].$strInfo['chars2'])#intval函数做用是提取整数(参数包括字符串和整数) getimagesize($filename)#检测图片类型,返回数组。不是绝对安全,可绕过 image_type_to_extension('int')#返回后缀名,参数范围可参照getimagesize函数返回结果索引3 stripos($name,'.')#返回'.'在$name字符串中首次出现的位置(从0开始) #获取文件名后缀: 第一种方法: strtolower(substr($_FILES[$n]["name"],strrpos($_FILES[$n]["name"],'.')+1)) 第二种方法: $uptype = explode(".",$_FILES["file"]["name"]);//获取扩展名 $kuozm=strtolower(end($uptype));