D 4天网管理系统

<!DOCTYPE html>

D.4天网管理系统

D.4天网管理系统

知识点一:PHP是一门弱类型的语言。弱类型的语言对变量的数据类型没有限制,你可以在任何地时候将变量赋值给任意的其他类型的变量,同时变量也可以转换成任意地其他类型的数据。

在php里,0e12345=0e7777777777777777777,返回true.(因为0的任何次方都为0,所以左边等于右边的)
这种'0e'加‘数字’的,被看作0的多少次方。参考文章D.2对科学计数法的介绍。

知识点二:MD5

Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3MD4

知识点三:serialize()和unserialize()

serialize — Generates a storable representation of a value

serialize — 产生一个可存储的值的表示

unserialize — Creates a PHP value from a stored representation

unserialize — 从已存储的表示中创建 PHP 的值


思路:web(题)第一看源码



1,变量test等于获取的username。

2,变量test,对它赋值,值为变量testMD5加密后的值。这里注意=,是赋值运算符。这意味着右侧赋值表达式会为左侧运算数设置值。

3,如果变量test等于0,则返回true。(“==”是等于)

这说明网页中的usename,经过MD5加密,要等于0.

百度以0e开头的MD5值,然后检查下,发现没错可以用。


用户名输入,s878926199a

然后得到一个hint。





结合提示代码,这意思也就是数组了,password应该是已序列化的代码,并且经过unserialize()函数过后,参数user以及pass都应该是满足if语句的值,也就是“1”,这样的话,构造序列化的变量:

a:2:{s:4:"user";b:1;s:4:"pass";b:1;}

意思是数组a中有两个元素,长度为4的user元素的bool值为1,长度为4的pass元素的bool值为1.

这样,经过反序列化后的user以及pass都是1,满足if语句,则会print出flag

上面这段是抄的,对php不是很熟啊。。。。。。。。。