题目地址:http://ctf5.shiyanbar.com/web/PHP/index.php

抓包在header中发现提示

访问得到源码

 <?php

 $info = "";
$req = [];
$flag="xxxxxxxxxx"; ini_set("display_error", false);
error_reporting(0); if(!isset($_POST['number'])){
header("hint:6c525af4059b4fe7d8c33a.txt"); die("have a fun!!");
} foreach([$_POST] as $global_var) {
foreach($global_var as $key => $value) {
$value = trim($value);
is_string($value) && $req[$key] = addslashes($value);
}
} function is_palindrome_number($number) {
$number = strval($number);
$i = 0;
$j = strlen($number) - 1;
while($i < $j) {
if($number[$i] !== $number[$j]) {
return false;
}
$i++;
$j--;
}
return true;
} if(is_numeric($_REQUEST['number'])){ $info="sorry, you cann't input a number!"; }elseif($req['number']!=strval(intval($req['number']))){ $info = "number must be equal to it's integer!! "; }else{ $value1 = intval($req["number"]);
$value2 = intval(strrev($req["number"])); if($value1!=$value2){
$info="no, this is not a palindrome number!";
}else{ if(is_palindrome_number($req["number"])){
$info = "nice! {$value1} is a palindrome number!";
}else{
$info=$flag;
}
} } echo $info;

通读源码,总结出flag需要以下条件

1.POST提交一个number值

2.number不能提交纯数字,包括16进制(0x22aa)和科学计数法形式(2e11)

(   if(is_numeric($_REQUEST['number']))   )

3.对number取整再转化为字符串后要和原提交的字符串相等

(   $req['number']   要等于  strval(intval($req['number'])    )

4.对number取整要等于 对number逆序 后取整的值

(   $value1 = intval($req["number"]);    要等于   $value2 = intval(strrev($req["number"]));   )

5.原number字符串不能是回文数

if(is_palindrome_number($req["number"])){
   $info = "nice! {$value1} is a palindrome number!";
}else{
  $info=$flag;
}
 
回文就是正序和逆序的字符串相等
不是回文,$info才会等于$flag;,后面会输出$info。
 
 
2,3似乎矛盾,但可以用00字节绕过,对123\00取整后是123,而把 "123\00" 和 "123" 比较的话,两者会相等。
 
4,5看起来也是矛盾的,但是intval()函数有最大值的,不同系统下不同,我在本地测试范围是-2147483648 到 2147483647,所以intval(999999999999)=2147483647,那么以下等式成立:intval(2147483647)=intval(7463847412)=2147483647,而7463847412便是2147483647的逆序文本,而且2147483647不是回文数。
 
综上,

实验吧——你真的会PHP吗?(intval范围 php中\00的利用)的更多相关文章

  1. 实验吧--web--你真的会php吗

    ---恢复内容开始--- 实验吧的一道题php审计题.拉下来写一写. http://ctf5.shiyanbar.com/web/PHP/index.php 打开之后说have fun 那就抓包来看看 ...

  2. CTF-代码审计(3)..实验吧——你真的会PHP吗

    连接:http://ctf5.shiyanbar.com/web/PHP/index.php 根据题目应该就是代码审计得题,进去就是 日常工具扫一下,御剑和dirsearch.py 无果 抓包,发现返 ...

  3. 20145233韩昊辰 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)

    20145233 <Java程序设计>实验报告一:Java开发环境的熟悉 实验要求 使用JDK编译.运行简单的Java程序: 使用IDEA 编辑.编译.运行.调试Java程序. 实验内容 ...

  4. 20145207《Java程序设计》实验四( Android程序设计)实验报告

    <Java 程序设计>实验四( Android程序设计)实验报告 目录 改变 Android开发基础实验要求 实验成果 课后思考 改变 修改了之前仅仅是贴了图片,连代码都没粘的状态.增加了 ...

  5. 20172329 2018-2019-2 《Java软件结构与数据结构》实验二报告

    20172329 2018-2019-2 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...

  6. 20184302 2019-2020-2 《Python程序设计》实验四报告

    20184302 2019-2020-2 <Python程序设计>实验四报告 课程:<Python程序设计> 班级: 1843 姓名: 李新锐 学号:184302 实验教师:王 ...

  7. 201871010110-李华 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 (1)理解并掌握代码风格及设计规范:(2)通过任务3进行协作开发,尝试进行代码复审,在进行同伴复审的过程中体会结对 ...

  8. 动手学TCP——CS144实验感想

    在Stanford CS144的课程实验Lab0~Lab4中,我们动手实现了一个自己的TCP协议,并且能够真的与互联网通信!此外,感谢Stanford开源本实验并提供了大量的优质测试用例,使得我们仅仅 ...

  9. Android中Activity的四大启动模式实验简述

    作为Android四大组件之一,Activity可以说是最基本也是最常见的组件,它提供了一个显示界面,从而实现与用户的交互,作为初学者,必须熟练掌握.今天我们就来通过实验演示,来帮助大家理解Activ ...

随机推荐

  1. @TableField(select=false)

    使用这个注解排除删除标识字段.

  2. 201871010110-李华《面向对象程序设计(java)》第十周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  3. 【转载】Makedown数学公式语法

    Typora数学模块 行间表达式快捷键($$) 点击"段落"->"公式块" 快捷键Ctrl+Shift+m "$$"+回车 行内表达式 ...

  4. 【入门篇一】SpringBoot简介(1)

    官网:https://spring.io/projects/spring-boot 一.什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新S ...

  5. USACO Stock Market

    洛谷 P2938 [USACO09FEB]股票市场Stock Market 洛谷传送门 JDOJ 2625: USACO 2009 Feb Gold 2.Stock Market JDOJ传送门 题目 ...

  6. 查看ubuntu已安装软件

    查看安装的所有软件 dpkg -l “dpkg ”是“Debian Packager ”的简写.为 “Debian” 专门开发的套件管理系统,方便软件的安装.更新及移除.所有源自“Debian”的“L ...

  7. Docker、Kubernetes的 CICD实现思路

    from:https://www.jianshu.com/p/654505d42180

  8. Web协议详解与抓包实战:HTTP1协议-HTTP 响应行(3)

    一.HTTP 响应行 二.响应码分类:1xx 三.响应码分类: 2xx 1. 201 Created: 有新资源在服务器端被成功创建 2.207 Multi-Status:RFC4918 ,在 WEB ...

  9. JavaWeb 笔记

    WEB-INF 目录 web.xml 文件配置 精准匹配 "/" "/index" "/go/index.html" 路径通配匹配 &quo ...

  10. jquery.pagination.js的使用

    html页面 //要显示内容表格 <table id="gifts"> <tr class='first'> <th>时间</th> ...