php的一些语法规则和函数积累

1. == 比较,只判断值是否相等,不判断类型是否相同。(可以在值后加字母这样绕过)

 === 不仅比较值相等还会要求类型比较

2.md5无法处理数组!所以构建数组就可以了(这样就会返回false)

根据MD5的特性,有两点漏洞
两个开头为0的md5值相同。
md5不能处理数组。

==用法,0 == 字符串是成立的,从而可以绕过MD5检查。

3.第二个是strcmp函数strcmp = string compare(字符串比较)

其实是利用的是如果比较的是字符串都相同的话会返回0.(如果比较的不是字符串那也会错误返回0)需要v3和flag的值相同才返回flag的值.

10.26

extract() 函数从数组中将变量导入到当前的符号表。此函数会将数组键名当作变量名,值作为变量的值

trim()去除字符串首尾处的空白字符

file_get_contents()将整个文件读入一个字符 伪协议 php://input 

其实看到file_get_contents(),我们就应该想到使用php://input将其绕过,php://input是可以访问请求的原始数据的只读流,可以直接读取到POST上没有经过解析的原始数据。但enctype=”multipart/form-data” 的时候 php://input 是无效的。

使用方法:bugku_file_get_contenets

①将要get的参数/?xxx=php://input

②使用post方法传递想要file_get_contents()返回的值

这道题目就是要get上传两个参数一个是ac一个是fn

使用这个协议?ac=flag&&fn=php://input

同时post上传一个flag    因为题目要求的是ac和fn的值要相同。

为什么使用php://input

php://input是一个PHP伪协议,它允许访问请求的原始数据(即POST请求体)。当使用file_get_contents('php://input')时,它会读取POST请求体中的数据作为文件内容。这在这里非常有用,因为我们可以通过POST请求直接控制文件内容,从而匹配$ac的值。

关键点:

  • php://input将POST数据视为文件流,因此我们可以动态设置文件内容。

  • 在这个挑战中,我们需要$ac等于文件内容,所以通过php://input,我们可以让文件内容等于$ac

11.13

 header()

header("location:index.php?line=&filename=a2V5cy50eHQ=");

功能:发送HTTP头部信息

参数"location:URL" 实现重定向

注意:必须在输出任何内容之前调用

array()

$file_list = array(
    '0' => 'keys.txt',
    '1' => 'index.php',
);

功能:创建数组

替代语法:也可以使用 [](PHP 5.4+)

用途:定义允许访问的文件白名单

intval()

$line = isset($_GET['line']) ? intval($_GET['line']) : 0;

功能:将变量转换为整数

作用:防止SQL注入和类型混淆攻击

示例"123" → 123"abc" → 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值