展开

关键词

PHPCTF中的应用

PHP作为世界上最好的语言(然而人生苦短,我用python),在CTF web题中大放异彩,深受出题人的喜爱。 P神在对web题出题套路总结的第三条指出,出题人喜欢花式玩弄php的特性,包括、反序列化、0截断、iconv截断。那么今天我们就php这一特性,总结一下相关出题的套路。 在Bugku WEB Write Up(二)《矛盾》这题中我们已经初步领略了PHP的魅力也明白了为什么“test”会等于0这里再举几个例子,加深一下理解? 这个时候就需要登场了。上面已经提到,“0e123456”与“0e654321”相比较时,会将其转换为科学计数法的数字。 这篇文章对phpCTF比赛中的总结并不全面,如果大家在做题的过程遇到了新的套路和绕过姿势,欢迎一起交流哦~

2K51

三十九.WHUCTF (2)代码审计和文件包含漏洞绕过(ezphp、ezinclude)

比较漏洞绕过,在PHP中,0e+数字使用==会被认为相等最后利用PHP反序列化中的字符逃逸推荐及参考文章:PHP Hash比较存在缺陷 - freebuf PHP Hash漏洞(关于0e 推荐及参考文章:(强推)CTF中文件包含漏洞总结 - LetheSec文件包含漏洞实例 - Agan兄PHP Include And Post Exploitation - ch_fu2020_WHUCTF_Writeup CTF比赛写的。 晚安娜~一.代码审计绕过二.文件包含漏洞绕过三.总结CTF初学者个人建议:多做CTF题目,多参加CTF比赛,多交流经验CTF题目推荐BUUCTF,比赛每个月都有很多,大赛小赛,比如XCTF、KCTF、WCTF 等每个优秀的CTF选手都有自己的工具库、脚本库、词典库多向优秀的安全团队学习,关注他们的公众号,甚至加好友,组队比赛CTF比赛对找工作有帮助,但后续建议和漏洞挖掘实际工作结合起来

6410
  • 广告
    关闭

    50+款云产品免费体验

    提供包括云服务器,云数据库在内的50+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHP代码审计01之in_array()函数缺陷

    前言从今天起,结合红日安全写的文章,开始学习代码审计,题目均来自PHP SECURITY CALENDAR 2017,讲完这个题目,会再用一道有相同问题的CTF题来进行巩固。下面开始分析。 先看一下PHP手册对这个函数的解释,是检查数组中存在某个值,重点是我圈起来的,如果没有设置第三个参数,那么就使用宽松的检查,问题就出现在这里。 ? ,只会进行比较,不会检查数据。 这里in_array()也是没有设置第三个参数,会进行比较,会将3 and 1=1转化为3从而绕过了白名单,输出你通过了。当我设置第三个参数为true时,此时会进行强检查。 那让我们做一道同CTF题目来加深巩固一下。CTF练习这道题目也是in_array()函数没有设置第三个参数,导致白名单被绕过,然后被SQL注入。下面我们具体看一下相关代码。 index.php

    28430

    php 问题

    php 是一门简单而强大的语言,提供了很多 Web 适用的语言特性,其中就包括了变量,在机制下,你能够给一个变量赋任意的值。 php 的 8 种变量----标准:布尔 boolen,整 integer,浮点 float,字符 string复杂:数组 array,对象 object特殊:资源 resource但由于 php 在定义变量时并不需要像 C++ 语言那样去定义其变量,因此在一些 CTF web 题目中,经常会碰到一些源码是 php 的题目,我们可以通过分析代码,结合 php 问题去尝试绕过。 总结----上面所述的 php 可能只是一部分,在打 CTF 过程中,可能更多,但问题都在于对函数的使用不够规范,对变量的没有完全校验(可使用内置的 settype, gettype 函数多校验或者规范 参考:php 总结:http:www.cnblogs.comMrsm1thp6745532.html0e开头MD5 python生成脚本 PHP哈希:http:blog.csdn.netkalbertleearticledetails70213392

    36700

    PHP代码安全杂谈

    虽然PHP是世界上最好的语言,但是也有一些因为语言的安全性问题出现。 PHP语言的一个特性,当一个整形和一个其他行比较的时候,会先把其他intval数字化再比。实践is_numeric()用于判断是否是数字,通常配合数值判断。 乍看上去又好像不可能这里,但是如果知道PHP语言的一个特性,当一个整形和一个其他行比较的时候,会先把其他intval数字化再比。这个特性的话就可以很好的绕过。 b=a=240610708参考文献 PHP 比较运算符PHP Float 浮点PHP 比较表PHP 总结PHP Hash比较存在缺陷,影响大量Web网站登录认证、忘记密码等关键业务PHP代码审计片段讲解 (入门代码审计、CTF必备)浅谈PHP安全NJCTF2017 线上赛 web 题解CTFPHP黑魔法总结Some features of PHP in CTFPHP浮点数运算精度的问题php strcmp

    62460

    php 不用字母,数字和下划线写 shell

    本文作者:微笑(信安之路 CTF 小组成员)先膜一波 p 师傅的文章 《一些不包含数字和字母的 webshell》https:www.leavesongs.compenetrationwebshell-without-alphanum.html CTF 遇到一道正则过滤了字母,数字和下划线的题目,发现了一些 PHP 的骚姿势,感觉很有必要总结一下。 另外声明这篇文章不是为了讲如何写免杀,而是讲一些骚姿势在 CTF 中的应用,不过师傅们当然可以自己利用这些姿势去构造自己的免杀。 例如非数字字母的 PHP 后门 甚至可以将上面的代码合并为一行,从而使程序的可读性更差:$__=(#^|).(.^~).(^`).(|^).({^);PHP 中取反 (~) 的概念来看一个汉字 和>>> 因此 两个写法性质一样结果会输出: ss不用数字构造出数字利用了 PHP 特性,true 的值为 1,故 true+true==2。$_=(>>>

    1.1K10

    PHP代码审计05之正则使用不当

    前言根据红日安全写的文章,学习PHP代码审计的第五节内容,题目均来自PHP SECURITY CALENDAR 2017,讲完题目会用一道CTF的题目和实例来加深巩固。 这是之前写的,有兴趣可以去看看: PHP代码审计01之in_array()函数缺陷 PHP代码审计02之filter_var()函数缺陷 PHP代码审计03之实例化任意对象漏洞 PHP代码审计04之strpos CTF练习通过上面的讲解,来用一道CTF题目来练习一下,也是关于正则的问题,先看代码:index.php flag.php 这道题目考察了是否熟悉PHP正则表达的字符,大体是下面这个表格: | alnum 手册,了解了字符,下面来分析代码,上面一共三处正则表达,第一处如下:if (0 >= preg_match(^]{12,}它表示的含义是匹配到可打印字符12往上包含12,^表示必须某字符开头,$表示必须某字符结尾 最后与42进行比较,都符合就输出flag,现在都解读清楚了,让咱们构造payload结果如下: ?

    13211

    网络安全自学篇(四)| 实验吧CTF实战之WEB渗透和隐写术解密

    考点:PHP题目解析:1.查看网页源代码如下所示,注意注释的提示。 ?2.需要用户名传入一个字符串,并且它经过md5加密后要等于0。 bool的true跟任意字符串可以相等。因此我们可以构造bool的序列化数据 ,无论比较的值是什么,结果都为true。 默认的传入参数是字符串isset()函数:检测变量是否已设置并且非 NULL。 重点:sha1()函数默认的传入参数是字符串,也可以传入其他,使其返回值为false,如数组。再加上题目标题false,可以想到构造FALSE===FALSE拿到flag。? = =:比较运算符号 不会检查条件式的表达式的 ===:恒等计算符 , 同时检查表达式的值与。构造网址:http:ctf4.shiyanbar.comwebfalse.php?

    78320

    PHP代码审计Day1 - in_array函数缺陷

    (这里之所以会发生强制转换,是因为目标数组中的元素为数字)我们来看看PHP手册对 in_array() 函数的定义。 )在 $haystack 中搜索 $needle ,如果第三个参数 $strict 的值为 TRUE ,则 in_array()函数会进行强检查,检查 $needle 的是否和 $haystack 由于这里(上图第6行)并没有将 in_array() 函数的第三个参数设置为 true ,所以会进行比较,可以绕过。 修复建议可以看到这个漏洞的原因是比较问题,那么我们就可以使用强匹配进行修复。 Day1 的分析文章就到这里,我们最后留了一道CTF题目给大家练手,题目如下:index.php

    1.3K20

    in_array函数缺陷

    (这里之所以会发生强制转换,是因为目标数组中的元素为数字)我们来看看PHP手册对 in_array() 函数的定义。 )在 $haystack 中搜索 $needle ,如果第三个参数 $strict 的值为 TRUE ,则 in_array()函数会进行强检查,检查 $needle 的是否和 $haystack 由于这里(上图第6行)并没有将 in_array() 函数的第三个参数设置为 true ,所以会进行比较,可以绕过。 修复建议可以看到这个漏洞的原因是比较问题,那么我们就可以使用强匹配进行修复。 Day1 的分析文章就到这里,我们最后留了一道CTF题目给大家练手,题目如下:index.php

    26520

    代码审计Day1 - in_array函数缺陷

    在文章的最后,我们还会留一道CTF题目,供大家练习,希望大家喜欢。 (这里之所以会发生强制转换,是因为目标数组中的元素为数字)我们来看看PHP手册对 in_array() 函数的定义。 )在 $haystack 中搜索 $needle ,如果第三个参数 $strict 的值为 TRUE ,则 in_array() 函数会进行强检查,检查 $needle 的是否和 $haystack 1category1&action=rate --data rate=1 --dbs --batch修复建议可以看到这个漏洞的原因是比较问题,那么我们就可以使用强匹配进行修复。 Day1 的分析文章就到这里,我们最后留了一道CTF题目给大家练手,题目如下:index.php

    33010

    粘贴一篇刘大佬的笔记

    粘贴一篇刘大佬的笔记php是世界上最好的语言,所以php自身的安全问题也是web安全的一个方面。由于其自身语言的特性以及内置函数对于传入参数的松散处理,所以会带来很多的问题,这里将进行简要介绍。 语言对变量的数据没有限制,可以在人很适合将变量赋值给人以的其他变量,同时变量可以转换成任意其他的数据。比较操作符=== 在进行比较的时候,会先判断两种字符串的是否相等,再比较。 == 在进行比较的时候,会先将字符串转化成相同,再比较。 ===’abcdef falseHash比较缺陷0e132456789==0e7124511451155 true0e123456abc==0e1dddadafalse0e1abc==0 true在ctf 因此便可以通过hash比较绕过校验。strcmp漏洞绕过 php --version 0, 如果两者相等返回0。

    18120

    zctf web100的简单分析

    作为ctf的web第一题,题目简介是“简单点”,那么先查找源代码、header等信息,没发现什么有用的,于是直接上简单的扫描器,扫到了一个1.php,进去后是phpinfo();的界面? ,按以往经验,ctf的web题一部分是有源码的(让人可以源码审计,不然纯黑盒测试就太难了),所以先尝试常见的源码备份,幸运的是访问.index.php.swp(最前面有一个点,表示是隐藏文件,.swp文件是因为 源码分析如下:1. get提交flag参数2. flag中不能等于155623. flag中要包含zctf字样4. md5(flag)的中间16位要跟md5(15562)中间16位相等(php的substr 这个0e46379442318098很特别,0e开头,跟着14个数字,在php转换中,可以转换为0(0e这种可以视为数字的科学计算法)所以一个思路就是我们也找一串字符串,包含zctf字样,然后其md5

    454150

    三十七.实验吧七道入门CTF题目(Web渗透和隐写方向)

    考点:PHP题目解析:1.查看网页源代码如下所示,注意注释。 2.需要用户名传入一个字符串,并且它经过md5加密后要等于0。 bool的true跟任意字符串可以相等。因此我们可以构造bool的序列化数据 ,无论比较的值是什么,结果都为true。 默认的传入参数是字符串isset()函数:检测变量是否已设置并且非 NULL。 重点:sha1()函数默认的传入参数是字符串,也可以传入其他,使其返回值为false,如数组。再加上题目标题false,可以想到构造FALSE===FALSE拿到flag。 = =:比较运算符号 不会检查条件式的表达式的===:恒等计算符 , 同时检查表达式的值与。构造网址:http:ctf4.shiyanbar.comwebfalse.php?

    8920

    CTF初识与深入

    Getflag~这道题需要注意两点,第一就是php协议,在这个文件包含的点使用php协议就可以读取任何文件源码,似地还有data协议,file协议。 web协议的种多,利用方法也多,可谓是实战中的一大利器。在CTF线上赛中也经常用到,比如上次CUIT校赛以及西安的那个XCTF比赛中就用到了phar:协议。 总共考察两个php的知识点:第一个是md5双等号相等: md5(240610708) == md5(QNKCDZO)第二个是数组和字符串进行strcmp返回0所以payload:http:47.93.190.246 分情况,以及少数的几个知识点~审计相关,以及join,就BUG库的提醒进行介绍。 Php算是PHP语言的一大特色了,在CTF中经常遇到,实际的白盒审计中也很常见。 在压缩包里还有一个p师傅的PPT,关于CTF技巧的,安利一波~因为我只是一只web狗,所以其它题也讲不出什么好东西来~在这里贴一个之前出现过的链接https:ctf-wiki.github.ioctf-wiki

    51601

    php引发的血案

    一个php题目代码审计的CTF题目:来自西电网信杯线下赛if(intval($password) < && intval($password + ) > )) 直接提交password=0x123 就好了同样的代码 结果如下:0x1234011 php5里面 结果如下:0x1234046614661 猜测:最开始以为是和这个intval有关系后来发现intval的结果是一样的,那么问题就出在php5和php7的强制转换上 (或不支持)明确的定义;变量是根据使用该变量的上下文所决定的。 PHP 以前的版本里,如果向八进制数传递了一个非法数字(即 或 ),则后面其余数字会被忽略。PHP 以后,会产生 Parse Error。 有一个的通用语句:$test = $_GET;echo $test + 1;test=1asdf php52 php72 查看文档主要因为php5.6到php7 之后一些特性的变化https:www.php.netmanualzhmigration7

    22610

    线下CTF小贴士

    而DEFCON作为CTF赛制的发源地,DEFCON CTF也成为了目前全球最高技术水平和影响力的CTF竞赛,似于CTF赛场中的“世界杯” 。 VNC这个端口和ftp也是似的对于以上的这些,msf+nmap用来作为攻击工具再适合不过了!! 数字越大越NB1.在根目录下放置一个php一句话2.在一个隐蔽的目录下放置一个php一句话3.在在一个隐蔽的目录下放置一个php一句话,并且把文件名改为了以 . 开头的4.使用文件包含的php木马5.将生成的木马文件时间属性(MAC时间)修改的6.在index.php中直接写php的恶意代码的7.用脚本把木马写到每一个文件中的........ 这种想法还是挺给力的,对于RCE这漏洞可能没有什么用,不过对于Web这种环境太适合了。

    19420

    分享个 CTF 小工具 bruteHASH

    思路源于一次三小时十二题的内部 CTF 竞赛,其中一道简单 MISC 给出明文范围(字母数字)和 MD5 开头,要求穷举出 flag——这当然不难,python 十几行代码搞定,但是运行出结果竟然用了近 于是想找一个高性能(CC++)指定格式 HASH 穷举工具,呃 无果……为了 CTF 需要构造 HASH 时能够“一把梭”,于是有了年轻人的第一个“轮子”功能随机或穷举指定格式 HASH 值,输出符合条件的 ”明文 HASH”支持指定明文格式不限定明文格式随机字符穷举自定义穷举字符集CTF 常见 HASH(MD4MD5SHA1)设置 HASH 开头、结尾或包含字符串帮助Usage of bruteHASH.exe -b=du -s=b6dff925 -i=16 声明CTF 偶尔需要用到”特殊”HASH,比如 MISC 中已知个别明文字符和部分 HASH,要穷举 flag 明文; WEB 中构造 MYSQL 注入, 要用指定字符集构造一个以”xxxxxxxx”开头的 MD5 ; PHP HASH 比较需要构造”0e”开头的 HASH 等等。

    24322

    CTF杂谈之PHP魔法与CBC加密

    也正是因为这些PHP特性,使得它频繁出现在各CTF题目中。在开始今天的重点之前,我们先复习一下以前遇到过的一些PHP黑魔法。 1.要求变量不相等,但变量的md5值相等==是比较运算,它不会去检查条件式的表达式的,===是恒等,它会检查查表达式的值与是否相等a) 0e的数都相等(==) 240610708、QNKCDZO 这两个字符串,经过md5运算后,都为0e的形式,满足相等的条件b) 数组的md5都相等(===)http:127.0.0.1CTFindex.php? 但PHP内置函数不太限制传入参数的,所以当输入的值不是字符串时,就会产生不预期的返回值。例如,我们传入一个数组,就会返回NULL,绕过判断。? a) 数组绕过与strcmp()似,传入参数是数组的时候,返回NULLb) %00截断绕过例题中对输入的password又多重限定:ereg(^+$, $_GET) !

    45860

    CTF| 这是一个刚挖好的洞······

    本篇收集了几个CTF中的题目作为例子,对$$,extract(),parse_str()的问题进行总结。 flag=&gift=CTF中extract()导致的变量覆盖问题的例题2: 题目源码:1.2. 5. 6. 7. 8. 9. = QNKCDZO && md5($a) == md5(QNKCDZO)所以要利用php语言特性,0e123会被当做科学计数法,0 * 10 x 123。 所以需要找到一个字符串md5后的结果是0e开头后面都是数字的,如,240610708,s878926199a PHP处理0e开头md5哈希字符串缺陷bug 参考:http:www.cnblogs.comPrimzahlp6018158 id=a=240610708 小总结变量覆盖漏洞在PHP代码审计中会以比较隐晦的方式存在,所以需要更加仔细的阅读源码找出漏洞的点,在CTF里面经常是以比较直接方式展示,所以可以先通过学习CTF各种变量覆盖的题目

    84180

    扫码关注云+社区

    领取腾讯云代金券