bugku 代码审计(1)

PHP中的include(),require()语句包含并运行指定文件

这两个语句在包含文件上完全一样,唯一的区别是对于错误的处理,require()语句在遇到包含文件不存在,或是出错的时候,就立即停止并报错,include()则继续运行

isset()函数用于检测变量是否已设置并且非null
如果已经使用unset()释放一个变量之后,在通过isset()判断将返回false
如果使用isset()测试一个被设置成null的变量,将返回false
同时要注意的是null字符("\0")并不等同于php的null变量

highlight_flie()函数对文件进行语法高亮显示

die()函数输出一条消息,并且推出当前脚本
该函数是exit()函数别名

preg_replace()函数执行一个正则表达式的搜索和替换
语法:
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int KaTeX parse error: Expected 'EOF', got '&' at position 19: …it = -1 [, int &̲count ]] )

$pattern:要搜索的模式,可以是字符串或一个字符串数组
$replacement:用于替换的字符串或字符串数组
$subject:要搜索替换的目标字符串或字符串数组
$limit:可选,对于每个模式用于每个subject字符串的最大可替换次数,默认是-1(无限制)
$count:可选,为替换执行的次数

=是包括变量值与类型完全相等,而只是比较两个数的值是否相等。

preg_replace()
简单的字符过滤,可以通过双写绕过
但是稍微改写一下preg_replace()里面的参数,就可以轻松让双写绕过变得不可能

?amazing_word=‘you_ctf_like_cxk’

file_get_contents函数
将整个文件读入一个字符串
语法:
file_get_contents(path,include_path,context,start,max_length)

path 必需 要读取的文件的名称

extract()函数
从数组中将变量导入到当前的符号表
extract(array,extract_rules,prefix)
extract_rules
可选,extr_overwrite 默认
如果有冲突,则覆盖已有的变量

trim()函数
移除字符串两侧的字符
函数一处字符串两侧的 空白字符或者是其他预定义字符

strcmp()函数
strcmp(str1,str2)
如果str1小于str2,返回<0
如果sta1大于str2,返回>0
如果两者相等,返回0

die()函数
die()函数输出一条消息,并且退出当前脚本
该函数是exit()函数的别名
die(status)

strcmp() 函数漏洞
该漏洞适用于5.3之前版本的php
传入的期望类型是字符串类型的数据,但是如果我们传入非字符类型的数据的时候,这个函数接收到了不符合的类型,将会发生错误,显示了报错的警告信息之后,将会return 0.

eregi()函数
语法
int eregi(string pattern,string string,[array regs]);
eregi()函数在一个字符串搜索制定的模式的字符串,搜多不区分大小写,Eregi()可以特别有用的检查有效性字符串
返回值,如果匹配成功返回trur,否则返回false

urldecode()
urlencode()
urldecode()是php中的一个解码函数,当php在处理提交的数据时,本身会先进行一次url编码,再遇到urldecode函数,就会出现二次解码问题
将sql注入语句进行url编码,一般情况下不会被过滤掉,但是php解码后能够成功注入

error_reporting()函数 会给你报告何种php错误
错误报告
php有诸多错误级别,使用该函数可以设置在脚本运行时的级别,如果没有设置可选参数 level,error_reporting() 仅会返回当前的错误报告级别。

md5()函数
md5()函数用以计算字符串的MD5散列
md5()函数使用RSA数据安全,包括MD5报文摘要算法
md5(string,raw)

ereg()函数 eregi()函数
字符串对比解析函数

ereg()
int ereg(string pattern,string string,array [regs]);

本函数以 pattern 的规则来解析比对字符串 string。比对结果返回的值放在数组参数 regs 之中,regs[0] 内容就是原字符串 string、regs[1] 为第一个合乎规则的字符串、regs[2] 就是第二个合乎规则的字符串,余类推。若省略参数 regs,则只是单纯地比对,找到则返回值为 true。

strpos()函数查找字符串在另一字符串中第一次出现的位置
注释:strpos()函数对大小写敏感
该函数是二进制安全的
语法
strpos(string,find,start)
返回字符串在另一字符中第一次出现的位置,如果没有找到字符串则返回false

ereg只能处理字符,而password是数组,所以返回的是null,三个等号的时候不会进行类型转换。所以null!==false。

strpos的参数同样不能够是数组,所以返回的依旧是null,null!==false也是正确。

is_numeric()函数用于检测变量是否为数字或者数字字符串
bool is_numeric(mised $var)
如果指定的变量是数字和数字字符串则返回true,否则返回false

is_numeric()函数对于空字符%00,无论是%00是放在前后都可以判断为非数值,而%20空格字符只能放在数值后
或者使用数组绕过
%00截断符 %20空格符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值