XCTF篇:Web (新手练习题)之 simple_php 【教师节】


当你的才华

还撑不起你的野心时

那你就应该静下心来学习


目录

Web (新手练习题)之 simple_php

0x01 前言

0x02 补充知识:

php中有两种比较符号

PHP 官网介绍

形式

0x03 解题思路


题外话:

      刚刚刷朋友圈无意间发现,今天貌似是教师节,又一年的教师节到了,感觉时间过得好快,感叹过得太快了。不晓得是不是越长大越孤单,越容易感叹

      说真的,这一路走来,如果没有当初辛勤教诲我这个不良少年的老师(导师),也不会有现在的我!可能我也不会是现在的自己,可能会迷茫自己到底想要什么?为了什么?到底是什么驱动着我?一直在反复的问自己这几个问题,鞭策自己不要停下来,生活不会辜负想要变好的你!可能会来的晚,也可能回迟到,但一定不会不来。

      借这篇文章开头,感谢曾经教过我的老师(导师),你们在我生命中的出现,一半在课堂上,一半在路上,你们的恩情,我都记得!感谢你们犹如指路明灯般照亮我前行的

      最后,在这个特殊的日子里。祝你,教师节快乐!老师(导师)


Web (新手练习题)之 simple_php

0x01 前言

想玩玩攻防世界的朋友,CE已附上XCTF Web 练习题传送门:https://adworld.xctf.org.cn/

难度系数: 一星

题目来源: Cyberpeace-n3k0

题目描述:小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。

 

0x02 补充知识:

php中有两种比较符号

  • === 会同时比较字符串的值和类型
  • == 会先将字符串换成相同类型,再作比较,属于弱类型比较

PHP 官网介绍:

https://www.php.net/manual/zh/types.comparisons.php

形式

      数字和字符混合的字符串转换为整数后只保留数字

<?php

    $str="123.9abc";          

    $int=intval($str);           //转换后数值:123

    $float=floatval($str);       //转换后数值:123.9

    $str=strval($float);        //转换后数值:"123.9"

?>

0x03 解题思路

1、通过阅读代码发现需要同时满足 a==0 且 if a 为真,b 不是数字且 b>1234 才会返回 flag 

<?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; 
} 
?> 

2、php中的弱类型比较会使'abc' == 0为真,所以输入a=abc时,可得到flag1。(a可换成任意字符,例如:"b"、"c"、"d"、"、"等字符)

3、is_numeric() 函数会判断如果是数字和数字字符串则返回 TRUE,否则返回 FALSE,且php中弱类型比较时,会使('1234a' == 1234)为真,所以应该输入a=a&b=1235a

用&隔开a和b之间的参数

                                                                              URL中易出现的特殊字符  

特殊含义  十六进制
+ 表示空格(在URL中不能使用空格) %2B

/ 分隔目录和子目录

%2F

? 分隔实际的URL和参数 %3F
# 表示书签 %23

& URL中指定的参数间的分隔符

%26
= URL中指定的参数的值 %3D

成功得到Flag

Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}


我不需要自由,只想背着她的梦

一步步向前走,她给的永远不重


发布了178 篇原创文章 · 获赞 75 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/God_XiangYu/article/details/100704629