【愚公系列】2021年12月 攻防世界-简单题-WEB-007(simple_php)

举报
愚公搬代码 发表于 2021/12/25 19:04:44 2021/12/25
【摘要】 一、simple_php题目链接:https://adworld.xctf.org.cn/task/task_list?type=web&number=3&grade=0&page=1 二、使用步骤 1.点击获取在线场景 2.源码分析<?phpshow_source(__FILE__);include("config.php");$a=@$_GET['a'];$b=@$_GET['b']...

一、simple_php

题目链接:https://adworld.xctf.org.cn/task/task_list?type=web&number=3&grade=0&page=1

二、使用步骤

1.点击获取在线场景

在这里插入图片描述

2.源码分析

在这里插入图片描述

<?php
show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];
$b=@$_GET['b'];
if($a==0 and $a){
    echo $flag1;
}
if(is_numeric($b)){
    exit();
}
if($b>1234){
    echo $flag2;
}
?>

分析一波
(1)这里包含了config.php
(2)url接收参数a和b的值
(3)如果$a等于0 and a ,输出 a,输出 flag1
(4)如果 b 是数字或者字符串那么退出当前脚本 ( 5 ) 如果 b是数字或者字符串那么退出当前脚本 (5)如果 b>1234,输出 f l a g 2 所以,这里我们既要保证输出 flag2 所以,这里我们既要保证输出 a, b ,又要保证 b,又要保证 b是数字,那么就用到php的弱类型比较了

在浏览器上输入:http://111.200.241.244:65181/?a=c&b=2222a
在这里插入图片描述

得到完整flag:Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}


总结

掌握php弱类型比较

php中其中两种比较符号:

==:先将字符串类型转化成相同,再比较
===:先判断两种字符串的类型是否相等,再比较
字符串和数字比较使用==时,字符串会先转换为数字类型再比较

var_dump('a' == 0);//true,此时a字符串类型转化成数字,因为a字符串开头中没有找到数字,所以转换为0
var_dump('123a' == 123);//true,这里'123a'会被转换为123

var_dump('a123' == 123);//false,因为php中有这样一个规定:字符串的开始部分决定了它的值,如果该字符串以合法的数字开始,则使用该数字至和它连续的最后一个数字结束,否则其比较时整体值为0。
举例:
var_dump('123a1' == 123);//true
var_dump('1233a' == 123);//false
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。