连接: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. LG2578 「ZJOI2005」九数码游戏 bfs

    问题描述 LG2578 题解 用string+map去重. bfs即可. \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace ...

  2. mysql select limit 大数据量查询 性能终极提升方法

    还是广告位 我们的使用mysql的时候总是想当然的使用 select × from tables where a>0 order by id desc limit 500000,200 当我们真 ...

  3. es6模块化规范

    在 es6 之前是没有块这个概念的,es6zhong 引入:实际如下: 若 xx1 和 xx2 中有变量名相同,且引入在同一 html 下,需要为引入的 script 标签加上 type=“modul ...

  4. minio select api 试用

    对于minio 我们可以使用基于sql 的对象内容查询,特别适合进行特定文件内容的获取,强大方便. 以下是一个简单的试用 环境准备 集成了prometheus docker-compose 文件   ...

  5. springboot对JPA的支持

    springboot之jpa支持 导入相关pom依赖 <dependency> <groupId>org.springframework.boot</groupId> ...

  6. select标签刷新后保持之前选择值

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <selec ...

  7. [LeetCode] 239. Sliding Window Maximum 滑动窗口最大值

    Given an array nums, there is a sliding window of size k which is moving from the very left of the a ...

  8. [LeetCode] 204. Count Primes 质数的个数

    Count the number of prime numbers less than a non-negative number, n. Example: Input: 10 Output: 4 E ...

  9. Linux网络编程综合运用之MiniFtp实现(一)

    春节过后,万物复苏,在这元宵佳节的前一天,决定继续开启新年的学习计划,生命在于运动,提高源于学习,在经过漫长的Linux网络编程学习后,接下来会以一个综合的小项目来将所学的知识点综合运用,首先是对项目 ...

  10. jquery关于移动端的点击事件解析

    jquery关于移动端的点击事件解析 如果用click来写 你连续点几下 会没有反应 响应是非常慢的 所以移动端必须用touchstart代替click来写