笔记:
PHP函数isset(): 检测变量是否设置
只能用于变量,传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined() 函数
格式: isset ( mixed var [, mixed var [, ...]] )
若变量不存在则返回 FALSE
若变量存在且其值为NULL,也返回 FALSE
若变量存在且值不为NULL,则返回 TURE
同时检查多个变量时,每个单项都符合上一条要求时才返回 TRUE,否则结果为 FALSE
== : 比较运算符号 不会检查条件式的表达式的类型
===: 恒等计算符 , 同时检查表达式的值与类型。(会检查表达式类型,如bool)
die()函数 : 停止程序运行,输出内容
sha1()函数: 计算字符串 "Hello" 的 SHA-1 散列。默认的传入参数类型是字符串型
W3School: http://www.w3school.com.cn/php/func_string_sha1.asp
例:
<?php $str = "Shanghai"; echo sha1($str); ?>
链接: http://www.shiyanbar.com/ctf/1787
右击查看源代码,发现这一段:
登录成功条件: (1)传入name,password的值(2)name和password的值不能相等(3) name和password的sha1加密散列值相等
前两个条件容易实现,关键是第三个条件,怎样实现呢?
思路: sha1()函数默认的传入参数类型是字符串型,可以传入其他类型,使其返回值为false。如数组类型。
实现: 构造url: http://ctf4.shiyanbar.com/web/false.php?name[]=a&password[]=b (a,b只要不等即可),提交即可获得flag