BWVS 靶场测试

一、PHP弱类型 is_numeric()

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

clipboard.png

# 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

clipboard.png

# 二、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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值