ctf常用函数及其绕过
1.QUERY_STRING
用法: $_SERVER['QUERY_STRING'] 获取查询语句,实例中可知,获取的是?后面的值
绕过: 不会进行urldecode,$_GET[]
会,用url编码绕过
2.preg_match
用法:preg_match — 执行匹配正则表达式
例子:preg_match('/^$/')用换行符%0a绕过
3.$_REQUEST
用法:接受GET和POST参数
绕过:POST优先级高
4.file_get_contents
用法:将一整个文件读入到一个字符串中
绕过:用data伪协议绕过
例子:
if (file_get_contents($file) !== 'debu_debu_aqua')
die("Aqua is the cutest five-year-old child in the world! Isn't it ?<br>");
绕过姿势:data://text/plain,debu_debu_aqua
5.sha1
用法:计算散列值
绕过:无法处理数组
6.addslashes
用法:在每个双引号(")前添加反斜杠
绕过:
a.字符编码问题导致绕过
-设置数据库字符为gbk导致宽字节注入
-使用icon,mb_convert_encoding转换字符编码函数导致宽字节注入
b.编码解码导致的绕过
-url解码导致绕过addslashes
-base64解码导致绕过addslashes
-json编码导致绕过addslashes
c.一些特殊情况导致绕过
-没有使用引号保护字符串,直接无视addslashes
-使用了stripslashes
-字符替换导致的绕过addslashes
7.parse_url
用法:解析 URL,返回其组成部分
绕过://user.php?page=php://filter/convert.base64-encode/resource=ffffllllaaaaggg
多了一个/