目录
信息收集
从题目来看应该是让扫描备份文件(backupfile)
进入页面就一句话
Try to find out source file!
先用dirbuster模糊扫描一下目录
常见的如下
index.phps
index.php.swp
index.php.swo
index.php.php~
index.php.bak
index.php.txt
index.php.old
常见备份文件:“.git” 、“.svn”、“ .swp” “.~”、“.bak”、“.bash_history”、“.bkf“
在index.php.bak下载到一份源码
  
   - 
    
     
    
    
     
      <?php
     
    
- 
    
     
    
    
     
      include_once 
      "flag.php";
     
    
- 
    
     
    
    
     
      if(
      isset(
      $_GET[
      'key'])) {
     
    
- 
    
     
    
    
         
      $key = 
      $_GET[
      'key'];
     
    
- 
    
     
    
    
         
      if(!
      is_numeric(
      $key)) {
     
    
- 
    
     
    
    
             
      exit(
      "Just num!");
     
    
- 
    
     
    
    
     
          }
     
    
- 
    
     
    
    
         
      $key = 
      intval(
      $key);
     
    
- 
    
     
    
    
         
      $str = 
      "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
     
    
- 
    
     
    
    
         
      if(
      $key == 
      $str) {
     
    
- 
    
     
    
    
             
      echo 
      $flag;
     
    
- 
    
     
    
    
     
          }
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      else {
     
    
- 
    
     
    
    
         
      echo 
      "Try to find out source file!";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      ?>
     
    
 思路
代码审计
intval() 函数用于获取变量的整数值。
intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。
构造payload
?key=123
得到flag

知识补充
由于php中数字和字符串比较时
  
   - 
    
     
    
    
     
      $v1 = 
      "1";
     
    
- 
    
     
    
    
     
      $v2 = 
      1;
     
    
- 
    
     
    
    
     
      if (
      $v1==
      $v2){
     
    
- 
    
     
    
    
     
       
      echo (
      "true<br/>");
     
    
- 
    
     
    
    
     
      } 
      else{
     
    
- 
    
     
    
    
     
       
      echo(
      "false<br />");
     
    
- 
    
     
    
    
     
      };
     
    
- 
    
     
    
    
     
      if (
      $v1===
      $v2){
     
    
- 
    
     
    
    
     
       
      echo (
      "true<br/>");
     
    
- 
    
     
    
    
     
      } 
      else{
     
    
- 
    
     
    
    
     
       
      echo(
      "false<br />");
     
    
- 
    
     
    
    
     
      };
     
    
true
false
  
   - 
    
     
    
    
     
      <?php
     
    
- 
    
     
    
    
     
      $a=
      1;
     
    
- 
    
     
    
    
     
      $b=
      "text";
     
    
- 
    
     
    
    
     
      $c=
      0;
     
    
- 
    
     
    
    
     
      if(
      $a==
      $b){
     
    
- 
    
     
    
    
     	
      echo 
      "true";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      else{
     
    
- 
    
     
    
    
     	
      echo 
      "false";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      if(
      $c==
      $b){
     
    
- 
    
     
    
    
     	
      echo 
      "true";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      else{
     
    
- 
    
     
    
    
     	
      echo 
      "false";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      ?>
     
    
 false
true在php中 == 判断时 当数字与字符串作比较时,系统会先将字符串转化为数字,再与数字进行比较。数字和字符串进行比较时,当这个字符串是一个无法转换为数字的字符串,它就会被强制转化为数字,结果总是为0
数字+字符(字符串)
  
   - 
    
     
    
    
     
      <?php
     
    
- 
    
     
    
    
     
      $a=
      888;
     
    
- 
    
     
    
    
     
      $b=
      "888a";
     
    
- 
    
     
    
    
     
      if(
      $a==
      $b){
     
    
- 
    
     
    
    
     	
      echo 
      "true";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      else{
     
    
- 
    
     
    
    
     	
      echo 
      "false";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      ?>
     
    
true
字符(字符串)+数字
  
   - 
    
     
    
    
     
      <?php
     
    
- 
    
     
    
    
     
      $a=
      888;
     
    
- 
    
     
    
    
     
      $b=
      "a888";
     
    
- 
    
     
    
    
     
      $c=
      0;
     
    
- 
    
     
    
    
     
      if(
      $a==
      $b){
     
    
- 
    
     
    
    
     	
      echo 
      "true";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      else{
     
    
- 
    
     
    
    
     	
      echo 
      "false";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      echo 
      '<br>';
     
    
- 
    
     
    
    
     
      if(
      $c==
      $b){
     
    
- 
    
     
    
    
     	
      echo 
      "true";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      else{
     
    
- 
    
     
    
    
     	
      echo 
      "false";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      ?>
     
    
 false
true
数字+字符(字符串)+数字
  
   - 
    
     
    
    
     
      <?php
     
    
- 
    
     
    
    
     
      $a=
      8;
     
    
- 
    
     
    
    
     
      $b=
      "8a8";
     
    
- 
    
     
    
    
     
      $c=
      0;
     
    
- 
    
     
    
    
     
      if(
      $a==
      $b){
     
    
- 
    
     
    
    
     	
      echo 
      "true";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      else{
     
    
- 
    
     
    
    
     	
      echo 
      "false";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      echo 
      '<br>';
     
    
- 
    
     
    
    
     
      if(
      $c==
      $b){
     
    
- 
    
     
    
    
     	
      echo 
      "true";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      else{
     
    
- 
    
     
    
    
     	
      echo 
      "false";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      ?>
     
    
 true
false
字符(字符串)+数字+字符(字符串)
  
   - 
    
     
    
    
     
      <?php
     
    
- 
    
     
    
    
     
      $a=
      0;
     
    
- 
    
     
    
    
     
      $b=
      "a88a";
     
    
- 
    
     
    
    
     
      if(
      $a==
      $b){
     
    
- 
    
     
    
    
     	
      echo 
      "true";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      else{
     
    
- 
    
     
    
    
     	
      echo 
      "false";
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      ?>
     
    
true
转载:https://blog.csdn.net/qq_63701832/article/details/128708564
查看评论
					 
					