BWVS靶场测试

科技一颗大心心 2024-05-24 06:32:12
一、PHP弱类型 is_numeric()

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

#1、源代码分析

如果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

#二、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、代码分析<?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

0 阅读:0

科技一颗大心心

简介:感谢大家的关注