Web:Basic PHP
题目描述:
题目中给了一点提示:Basic PHP,以及两个网站http://web1.blue-whale.me:23331/feature/和http://123.207.149.64:23331/feature/
知识准备:
- PHP的一些基本知识,附带大佬博客https://www.restran.net/2016/09/26/php-security-notes/
解题过程:
-
打开题目给的两个网址,发现虽然网址不一样,但是打开之后的网址都变成了http://123.207.149.64:23331/feature/
-
通过题目的代码,可以知道,要通过两关才能得到flag
-
第一关:使得MD5加密后的test参数等于0
-
介绍一批md5开头是0e的字符串,0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,0的多少次方还是0。md5(‘240610708’) == md5(‘QNKCDZO’)成功绕过!MD5值为0的常用数据:
QNKCDZO=0e830400451993494058024219903391 s878926199=0e545993274517709034328855841020 s155964671a=0e342768416822451524974117254469 s214587387a=0e848240448830537924465865611904 s214587387a=0e848240448830537924465865611904 s878926199a=0e545993274517709034328855841020 s1091221200a=0e940624217856561557816327384675 s1885207154a=0e509367213418206700842008763514
-
-
第二关:$_GET[‘name’] == $_GET[‘password’]不满足,并且满足sha1($_GET[‘name’]) === sha1($_GET[‘password’])
-
== 是弱类型的比较,在进行比较的时候,会先将字符串类型转化成相同,再比较
-
=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行
-
-
-
得到flag:http://123.207.149.64:23331/feature/?name[]=1&password[]=2&test=240610708