当前位置:   article > 正文

[鹤城杯 2021]Middle magic

[鹤城杯 2021]Middle magic
  1. <?php
  2. highlight_file(__FILE__);
  3. include "./flag.php";
  4. include "./result.php";
  5. if(isset($_GET['aaa']) && strlen($_GET['aaa']) < 20){
  6. $aaa = preg_replace('/^(.*)level(.*)$/', '${1}<!-- filtered -->${2}', $_GET['aaa']);
  7. if(preg_match('/pass_the_level_1#/', $aaa)){
  8. echo "here is level 2";
  9. if (isset($_POST['admin']) and isset($_POST['root_pwd'])) {
  10. if ($_POST['admin'] == $_POST['root_pwd'])
  11. echo '<p>The level 2 can not pass!</p>';
  12. // START FORM PROCESSING
  13. else if (sha1($_POST['admin']) === sha1($_POST['root_pwd'])){
  14. echo "here is level 3,do you kown how to overcome it?";
  15. if (isset($_POST['level_3'])) {
  16. $level_3 = json_decode($_POST['level_3']);
  17. if ($level_3->result == $result) {
  18. echo "success:".$flag;
  19. }
  20. else {
  21. echo "you never beat me!";
  22. }
  23. }
  24. else{
  25. echo "out";
  26. }
  27. }
  28. else{
  29. die("no");
  30. }
  31. // perform validations on the form data
  32. }
  33. else{
  34. echo '<p>out!</p>';
  35. }
  36. }
  37. else{
  38. echo 'nonono!';
  39. }
  40. echo '<hr>';
  41. }
  42. ?>

preg_match:没有匹配的就返回false 

preg_replace:只能匹配一行的数据。

如果代码替换了abc,但后面又要求有abc,可以用%0a(换行符)

%0apass_the_level_1%23        %0a换行符,%23井号。

shal 哈希函数无法处理数组,会返回结果 null 

admin[]=1&root_pwd[]=2       ---》null == null

json_decode : 解码 JSON 字符串

level_3='{"result":0}'

这里要猜测 $result 是一个字符串,这样 0=="abc",为true

  1. <?php
  2. $json='{"a":12345}';
  3. $obj=json_decode($json);
  4. print $obj->{'a'};        //12345
  5. ?> //个人理解:json_decode作用就是便于数据存储,没有其他作用

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/444938
推荐阅读
相关标签
  

闽ICP备14008679号