连接:http://ctf5.shiyanbar.com/web/PHP/index.php

根据题目应该就是代码审计得题,进去就是

日常工具扫一下,御剑和dirsearch.py 无果

抓包,发现返回得响应头里面有提示

访问则拿到源码。。

有次听培训有个学长说,做代码审计看代码顺序,先去找flag在哪儿,快速找到直接从那儿开始看。

intval()     返回变量得整数值

strrev()  这个函数让字符串反序.

然后再来看代码里is_palindrome_number()得功能,函数得功能

就是看看这个输入这个字符是不是回文数,是就返回ture。(有时候如果看不懂函数得内容可以直接翻译函数得名字,一般是对得,哈哈哈) //    回文数就是   12321 1112111 这样的第i个和n-i个字符要相等。

ok,接下来说解题思路

四个限制条件

不得不说,CTF里得代码审计老是出这种矛盾得题,其实就是想让我们利用函数得漏洞绕过

第一个 is_numeric() 可以用%00绕过,可以输入数字,所以这里第一个条件和第二个条件通过。%00可以放在开头或结尾,%20只能放在最后。

三四个条件绕过得方法很多种

1.intval() 处理浮点数得时候直接返回整数,所以我们直接构造 number=0.00%00

这样得话就可以满足第三个条件满足,因为0得反序也是0

但是代码里那个函数处理number得时候,是从第一位和最后一位相等,倒数第二位和第二位相等一次类推,所以我们直接构造0.00,0是不是回文数我不知道,但是第二位 '.'和倒数第二位’0‘是不同得,所以检测函数会判断它不是回文数,所以条件4也绕过,拿到flag。

类似这个0.00%00 得原理还有  ’-0%00‘

2.number=0e00%00

这个原理和上面一样,只是把0.00 换成科学记数法而已。

3.构造法3,这个构造法我去测试了发现不行,出处  https://blog.csdn.net/he_and/article/details/80615920

但是看了别人得wp发现以前是可以得。

能想出这个方法得人真是棒棒哦,也许题目就是想这么考得,因为32位最大就是 2147483647 ,value2得过程就是,先将2147483647反序,得到7463847412,而这个数字是大于2147483647这个数字得,所以intval()这个函数又会返回 2147483647,这样就使得value1和value2得值都相等了,而2147483647这个数又不是回文数,所以绕过四个条件。

但是这个方法不行了,我也不知道为什么.

如果服务器是64位操作系统这个方法则不行,因为9223372036854775807这个数反序后比最大小。

CTF-代码审计(3)..实验吧——你真的会PHP吗的更多相关文章

  1. 某CTF代码审计题

    记一次参加CTF比赛翻车记!   开始还是挺有信心的,毕竟也是经常打一些CTF锻炼,然而比赛发现大佬们平时不显山不漏水的一比赛全出来了!赛后看了一下各题的writeup发现自己的确技不如人啊!借鉴一个 ...

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

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

  3. union注入的几道ctf题,实验吧简单的sql注入1,2,这个看起来有点简单和bugku的成绩单

    这几天在做CTF当中遇到了几次sql注入都是union,写篇博客记录学习一下. 首先推荐一篇文章“https://blog.csdn.net/Litbai_zhang/article/details/ ...

  4. 实验吧——你真的会PHP吗?(intval范围 php中\00的利用)

    题目地址:http://ctf5.shiyanbar.com/web/PHP/index.php 抓包在header中发现提示 访问得到源码 <?php $info = "" ...

  5. CTF——代码审计之变量覆盖漏洞writeup【2】

    题目: 基础: 所需基础知识见变量覆盖漏洞[1]  分析: 现在的$a=’hi’,而下面的函数需满足$a=’jaivy’才可以输出flag,那么需要做的事就是想办法覆盖掉$a原来的值. 那么出现的提示 ...

  6. CTF——代码审计之变量覆盖漏洞writeup【1】

    题目: 所需基础知识: 分析: 思路:由于目的是要拿$flag的值,所以可以得出最终会输出两个变量,而$flag的值在红框那行,被我们自己post的值给覆盖,所以flag值肯定不会在这出来,那么只剩下 ...

  7. CTF之PHP黑魔法总结

    继上一篇php各版本的姿势(不同版本的利用特性),文章总结了php版本差异,现在在来一篇本地日记总结的php黑魔法,是以前做CTF时遇到并记录的,很适合在做CTF代码审计的时候翻翻看看. 一.要求变量 ...

  8. 7. 由一道ctf学习变量覆盖漏洞

    0×00 背景 近期在研究学习变量覆盖漏洞的问题,于是就把之前学习的和近期看到的CTF题目中有关变量覆盖的题目结合下进一步研究. 通常将可以用自定义的参数值替换原有变量值的情况称为变量覆盖漏洞.经常导 ...

  9. [CTF]Capture The Flag -- 夺旗赛

    CTF(Capture The Flag) 简单介绍 CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式. `In co ...

随机推荐

  1. DNS解惑之资源记录(2)

    1.区域解析库 每个域都要维护一个区域解析库,而区域解析库都是由一条条的记录组成的,而每一条记录就被称为资源记录(resource  record  RR). 我们知道大多数域名下面都不仅仅有www服 ...

  2. 如何做到MySQL高扩展性?

    高并发及其关注要点 近年来,随着互联网.移动互联网的飞速发展,业务系统的互动性日益增强,用户规模不断攀升,电商.游戏.直播.在线教育.短视频等一系列新兴移动端应用如雨后春笋般涌现出来,这些应用 “高并 ...

  3. USACO Ski Course Design

    洛谷P3650 https://www.luogu.org/problemnew/show/P3650 JDOJ 2393 https://neooj.com:8082/oldoj/problem.p ...

  4. VIJOS-P1232 核电站问题

    VIJOS-P1232 核电站问题 JDOJ 1373 https://neooj.com/oldoj/problem.php?id=1373 题目描述         一个核电站有N个放核物质的坑, ...

  5. impala进阶

    一.impala存储 1.文件类型 2.压缩方式 二.impala分区 1.创建分区方式 partitioned by 创建表时,添加该字段指定分区列表: create table t_person( ...

  6. CSP前的板子

    板子A(扩展欧几里得) 题目描述 求关于x的同余方程 ax≡1(modb) 的最小正整数解. 输入格式 一行,包含两个正整数 a,b,用一个空格隔开. 输出格式 一个正整数 x​,即最小正整数解.输入 ...

  7. CF908G New Year and Original Order(DP,数位 DP)

    又一次降智…… (数位 DP 原来可以写这么短,学到了) 问题可以转化为求数位中 $\ge k$ 的有恰好 $j$ 位的数的个数.设为 $c_{j,k}$. 那么答案就是:(考虑把 $k$ 的贡献拆开 ...

  8. 第09组 Beta冲刺(5/5)

    队名:观光队 链接 组长博客 作业博客 组员实践情况 王耀鑫 过去两天完成了哪些任务 文字/口头描述 学习 展示GitHub当日代码/文档签入记录 无 接下来的计划 无 还剩下哪些任务 s 答辩 遇到 ...

  9. Salesforce Lightning开发学习(四)重写新建/更新按钮

    重写新建/更新按钮的原因是因为项目需要用户在新建数据时从接口对数据进行校验,保证数据的有效性,同时获取接口返回的部分数据完成信息填充,而Sales force的trigger仅支持@future方法异 ...

  10. CISCO 3750交换机堆叠

    双交换机堆叠操作 一.基本要求: ios版本要一致.专用的堆叠模块和堆叠线缆.最大堆叠个数9 二.堆叠的好处: 高密度端口.便于管理.堆叠的交换机可以看作一台交换机统一配置 三.堆叠实例: 1:分别清 ...