输入:127.0.0.1/BWVS/bug/php/code.php

如果num不是数字,那么就输出num,同时如果num==1,就输出flag。即num要是字符串又要是数字
#2、函数分析:is_numeric()函数:函数用于检测变量是否为数字或数字字符串。如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE,注意浮点型返回空值,即 FALSE。
立刻想到PHP的弱类型比较,构造payload:?num=1shu
#3、payload解析:1shu不是数字或数字字符串则返回false,!false为ture 输出num。php弱类型会自动将第一位为数字的字符串为该数字的值,否则为值0。所以1shu会被解析为1==1。成功返回flag

1、strcmp(str1,str2)函数用来字符串的比较,当str1 < str2时 返回小于0 ,str1 > str2时返回>0的数,str1 == str2时返回 等于0
2、但是他不能判断数组,直接返回flase
所以可以直接构造payload: ?password[]=1 查看源代码 /bug/php/md5.php
#2、代码分析<?php include_once('../../bwvs_config/sys_config.php'); require_once('../../header.php'); $password=$_GET['password']; if(strcmp('21232f297a57a5a743894a0e4a801fc3',$password)){ //当password==21232f297a57a5a743894a0e4a801fc3 时相等 为false echo 'password is false ! ! ! ! !'; }else{ echo 'flag is here!!<br>'; echo 'flag{挑战成功}'; }?><?php require_once('../info.php');?>发现当password为这串字符串时,即?password=21232f297a57a5a743894a0e4a801fc3时,也能得到flag