医院做网站需要多少钱,网络营销的步骤,在广州注册公司流程和费用,西安seo优化工作室一、PHP弱类型 is_numeric()
输入#xff1a;127.0.0.1/BWVS/bug/php/code.php # 1、源代码分析
如果num不是数字#xff0c;那么就输出num#xff0c;同时如果num1#xff0c;就输出flag。即num要是字符串又要是数字
# 2、函数分析#xff1a;
is_numeric()函数127.0.0.1/BWVS/bug/php/code.php # 1、源代码分析
如果num不是数字那么就输出num同时如果num1就输出flag。即num要是字符串又要是数字
# 2、函数分析
is_numeric()函数函数用于检测变量是否为数字或数字字符串。如果指定的变量是数字和数字字符串则返回 TRUE否则返回 FALSE注意浮点型返回空值即 FALSE。
立刻想到PHP的弱类型比较构造payload:?num1shu
# 3、payload解析
1shu不是数字或数字字符串则返回false,!false为ture 输出num。php弱类型会自动将第一位为数字的字符串为该数字的值否则为值0。所以1shu会被解析为11。成功返回flag # 二、strcmp函数缺陷
# 1、理论知识
1、strcmp(str1,str2)函数用来字符串的比较当str1 str2时 返回小于0 str1 str2时返回0的数str1 str2时返回 等于0
2、但是他不能判断数组直接返回flase
所以可以直接构造payload password[]1 查看源代码 /bug/php/md5.php
# 2、代码分析
?phpinclude_once(../../bwvs_config/sys_config.php);require_once(../../header.php);$password$_GET[password];if(strcmp(21232f297a57a5a743894a0e4a801fc3,$password)){ //当password21232f297a57a5a743894a0e4a801fc3 时相等 为falseecho password is false ! ! ! ! !;}else{echo flag is here!!br;echo flag{挑战成功};}??php
require_once(../info.php);
?
发现当password为这串字符串时即password21232f297a57a5a743894a0e4a801fc3时也能得到flag