展开

关键词

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

data)print(res.text)f = open(test0523.txt,w)f.write(res.text)f.close() flag输出结果如下:题目+实战总结:使用%0A做截断,通换行 preg_match函数通PHP弱类型比较漏洞,在PHP弱类型中,0e+数字类型使用==会被认为相等最后利用PHP反序列化中的字符逃逸推荐及参考文章:PHP Hash比较存在缺陷 - freebuf 通PHP函数引入文件时,传入的文件名没有经合理的验证,从而操作了预想之外的文件,就可能导致意外的文件泄漏甚至恶意代码注入。 推荐及参考文章:(强推)CTF中文件包含漏洞总结 - LetheSec文件包含漏洞实例 - Agan兄PHP Include And Post Exploitation - ch_fu2020_WHUCTF_Writeup 晚安娜~一.代码审计二.文件包含漏洞三.总结CTF初学者个人建议:多做CTF题目,多参加CTF比赛,多交流经验CTF题目推荐BUUCTF,比赛每个月都有很多,大赛小赛,比如XCTF、KCTF、WCTF

6410

CTFPHP黑魔法总结

php黑魔法,是以前做CTF时遇到并记录的,很适合在做CTF代码审计的时候翻翻看看。 相同的情况下1.0e开头的全部相等(==判断)240610708 和 QNKCDZO md5值类型相似,但并不相同,在”==”相等操作符的运算下,结果返回了true.Md5和sha1一样 2.利用数组 (===判断)Md5和sha1对一个数组进行加密将返回NULL;而NULL===NULL返回true,所以可判断。 二、Strcmp利用数组查看php的手册int strcmp ( string $str1 , string $str2 )Return ValuesReturns < 0 if str1 is less ereg是处理字符串,传入数组之后,ereg是返回NULL%00截断http:www.secbox.cnhacker1889.html六、接收参数$a得存在,并且$a==0可用.(非数字都可

1.5K81
  • 广告
    关闭

    腾讯云前端性能优化大赛

    首屏耗时优化比拼,赢千元大奖

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

    PHP代码审计02之filter_var()函数缺陷

    前言根据红日安全写的文章,学习PHP代码审计审计的第二节内容,题目均来自PHP SECURITY CALENDAR 2017,讲完这个题目,会有一道CTF题目来进行巩固,外加一个实例来深入分析,想了解上一篇的内容 而escape滤器默认情况下,它使用HTML转义策略,也就是escape将PHP本机htmlspecialchars函数用于HTML转义策略,现在我们看一下PHP手册,htmlspecialchars 通对两个滤器的了解,我们想想该如何呢?,其实,这里可以通JavaScript伪协议来,为了更好的理解,这里写一小段简单的代码。 CTF练习通上面的分析,是不是对filter_var()函数有了一定的了解呢,让咱们用一道CTF的题目来巩固一下吧。这道题也是因为filter_var被,导致命令执行。看下面代码。 而上面我们分析了,可以使用伪协议来filter_var的检查,至于正则判断,只要我们结尾包含test.com,就了正则检查。

    19142

    CTF初识与深入

    滤了几乎所有的关键字,尝试无果之后发现,下面有个xss滤代码。 有幸认识一个审计超神的大佬,听他讲审计的时候,就经常见到类似这种情况,本来两个滤都很严实,但放到一起时,就可以用前一个滤函数去后一个滤。这是程序员在写程序时常犯的毛病,指的Mark一下。 Php弱类型算是PHP语言的一大特色了,在CTF中经常遇到,实际的白盒审计中也很常见。 最后测出来是空格和逗号被滤了~空格很好,可以用来,检测是否成功可以用and1=1#和and**1=0#来测。 爆出账号密码后,又有一个Mysql字符编码的(就是上面说的那一点),进后台之后是无回显命令执行。

    51601

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

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

    28430

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

    前言根据红日安全写的文章,学习PHP代码审计的第五节内容,题目均来自PHP SECURITY CALENDAR 2017,讲完题目会用一道CTF的题目和实例来加深巩固。 CTF练习通上面的讲解,来用一道CTF题目来练习一下,也是关于正则的问题,先看代码:index.php flag.php 这道题目考察了是否熟悉PHP正则表达的字符类,大体是下面这个表格: | alnum 实例分析通例题和CTF题目的讲解,是不是感觉棒棒的,现在咱们来分析实例吧,实例是LvyeCMS3.1,是基于ThinkPHP3.2.3框架。 这个实例存在的漏洞也是函数使用不规范被,导致任意文件删除。下面来具体分析: 先查看入口文件index.php ? 可以看到公共目录,应用目录等一些信息。接下来再看看目录结构: ? 但是这里是可以的,如果我们输入.....呢,会发生什么?是不是正好构造成了..,举个小例子会更清楚,如下: ?

    13211

    web狗之writeup--do you know upload?

    (说了等于没说)Solution这是一道上传的题目,其实没有什么特别的地方。这里就是想介绍一下自己使用的一个特别好的工具,就是 weevely。 没有什么特殊的地方,打开开发者工具,可以看到 html 包含了一段注释的代码: 那么可以断定后台应该使用的是 php 了。那么可以上传一个 php 木马来连接服务器了。 上传的经典套路就是先生成一个木马,然后将文件后缀改为图片格式,然后在 burp 中再将文件名改来。下面就是 weevely 的使用了。 通 :sql_console-u ctf-p ctfctfctf 就可以连接数据库了。接下来可以看到数据库的信息以及表格的信息。? 可以看到除了 information_schema 数据库,还有一个叫 ctf 的数据库,而且在 ctf 数据库中还有一个叫 flag 的表格。很明显,flag 很有可能就在在这个表格中。

    16120

    RCE的Bypass与骚姿势总结

    敏感字符:例如cat、chmod1) 利用变量# a=c;b=a;c=t;# $a$b$c 1.txt2) 利用base编码# echo cat | base64Y2F0wqAK# `echo $_GET);1) 插入注释(这对于阻止特定PHP函数名称的WAF规则集很有用)php -r system*caixukun*(whoami);php -r system*caixukun*(wh. https:www.freebuf.comarticlesweb160175.html3) 当遇到addslashes()滤了单引、双引、反斜杠、NULL这些预定义字符,利用PHP复杂变量。 这是一道CTF的题目,这是出自evoa师傅的思路,这里分享给大家。 https:www.evoa.meindex.phparchives625) 当只滤大小写字母和数字的时候且又限制了长度,该怎么。同样是CTF的题。?

    1.2K00

    PHP弱类型在CTF中的应用

    PHP作为世界上最好的语言(然而人生苦短,我用python),在CTF web题中大放异彩,深受出题人的喜爱。 MD5进阶也许上面套路你已经学会了所以来试试下面这种新姿势,看看你学到了几成呢??看到这么多md5,是不是已经有点晕了? 它经md5计算后为0e291242476940776845150308577824符合要求?JSON? strcmp在《Bugku WEB Write Up(四)》之《前女友》这道题中,对strcmp函数的进行了详细讲解,同时对php中md5()函数(sha1()函数类似)无法处理数组类型的数据从而可以进行了讲解 这篇文章对php弱类型在CTF比赛中的总结并不全面,如果大家在做题的程遇到了新的套路和姿势,欢迎一起交流哦~

    2K51

    PHP代码安全杂谈

    一、精度缺陷理论在用PHP进行浮点数的运算中,经常会出现一些和预期结果不一样的值,这是由于浮点数的精度有限。 year=2017然而结果如下: 有提示了,说明year这个参数是对的,但是2017中不可以出现7,这里如果不了解php精度的话,肯定是对2017进行各种编码,但是这里对编码也进行滤了: 所以最后一种可能就是利用 PHP精度来:? 乍看上去又好像不可能这里,但是如果知道PHP弱类型语言的一个特性,当一个整形和一个其他类型行比较的时候,会先把其他类型intval数字化再比。这个特性的话就可以很好的。 (入门代码审计、CTF必备)浅谈PHP弱类型安全NJCTF2017 线上赛 web 题解CTFPHP黑魔法总结Some features of PHP in CTFPHP浮点数运算精度的问题php strcmp

    62460

    PHP小tip引发的思考

    前段时间看到有关于CTFPHP黑魔法的总结,其中有一段只有介绍利用方法但是没有详细介绍为什么,我想了一下,思考如下,如果不对,请各位大佬多多指正~原话如下:当有两个is_numeric判断并用and连接时 ,and后面的is_numeric可以。 找了一下也没有找到为什么算是, 用VulnCTF【https:github.comjianmouVulnCTFtreemasterWeb】里面的一道题目做例子测试一下:初始变量被赋值为string, 引用暗羽表姐的博客截图来第二个is_numeric() 判断(图二)?(图三)? 但是只是知道这是的一种方式,但是为什么会出现这种情况呢,本来以为只要第一个判断为真就不会判断后面的条件正确还是不正确 ,以为问题出现在is_numeric,但是问题好像出现在and上面,根据PHP的优先级来看

    37260

    php 弱类型问题

    php 在定义变量时并不需要像 C++ 语言那样去定义其变量类型,因此在一些 CTF web 题目中,经常会碰到一些源码是 php 的题目,我们可以通分析代码,结合 php 弱类型问题去尝试。 函数之 md5----部分字符串由于使用 md5 加密后会变成 0e 开头的字符串,然后使用 == 判断时就容易? 那么可以通一批已公开的 md5 开头是 0e 的字符串去,下面给大家列一些可以用的 md5 值:QNKCDZO 0e830400451993494058024219903391s878926199a 函数之 strcmp 漏洞php -v < 5.3 )----strcmp 是比较两个字符串,如果 str1 < str2 则返回 0 如果两者相等则返回 0? 总结----上面所述的 php 弱类型可能只是一部分,在打 CTF 程中,可能更多,但问题都在于对函数的使用不够规范,对变量的类型没有完全校验(可使用内置的 settype, gettype 函数多校验或者规范

    36700

    Mysql注入导图-学习篇

    而本文将基于Mysql-PHP,以思维导图为主线,介绍导图中生僻知识点的同时,也会引入一些实战性的CTF练习题,供大家实验。 再往下的字符串操作部分则纯粹为了一些黑名单,CTF比较有用,实战环境常用的几个一般就够用了。数字型运算利用测试注入部分,贴上了一些测试语句。 因为有些黑名单(CTF题中尤其常见)在滤--空格这种注释符时使用的是正则,但正则很容易不严谨,比如滤了--空格 和 --%20(PS:空格的url编码),但--%a0(PS:换行符)依然能够滤 对于php-mysql来说,通PDO_MYSQL和MYSQLi方式与数据库交互地可以使用堆叠注入,但通mysql_query进行交互的不可以。 逗号继续向下,逗号是一个在CTF中常见的知识点,可以在有回显情况下,不引用逗号,进行注入。mid(abc from 1 for 1) 则在禁止逗号的盲注中非常有用。

    50800

    十五.文件上传漏洞 (4)Upload-labs靶场及CTF题目01-10

    虽然它只是一些题目,但其漏洞原理和利用程仍值得我们学习。Upload-labs是一个使用php语言编写,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场,旨在帮助大家对上传漏洞有一个全面的了解。 讲到这里,第一道题目就讲解完毕,主要是如何JS验证。----Pass-02第二道题目通查看提示,发现是MIME文件。 解决方案: MIME文件上传,尝试对Content-Type进行修改,核心思想是将上传的PHP文件Content-Type修改为“imagejpeg”。 查看源代码发现滤了点、大小写、空格、data,这里尝试php345,也可用Apache解析漏洞。PHP345文件上传PHP3代表PHP版本3,用于文件检测。 (点+空格+点),尝试进行。上传一张“mm2.jpg”的图片,尝试修改为“mm2.php. .”进行

    7330

    CTF札记二

    本文是CTF题的复现,我尽量用自己的文字将writeup解释清楚。----0x1第一题ereg函数截断? 一个php代码审计题,上代码:  首先第一层检查需要ereg漏洞,百度可以知道存在截断的问题:ereg读到%00的时候,就截止了,那么在字符串里面包括%00即可;接着需要长度小于8但要大于9999999 这里考虑用%00关键字滤。http:103.238.227.13:10087? http:120.24.86.145:8004index1.php? 答案格式CTF{**}JsFUCK又不是第一次见了,查看网页源码,复制到控制台,回车就可以啦! ?

    40230

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

    在文章的最后,我们还会留一道CTF题目,供大家练习,希望大家喜欢。下面是 第1篇代码审计文章:Day 1 - Wish List题目叫做愿望清单,代码如下:? 由于该函数并未将第三个参数设置为 true ,这导致攻击者可以通构造的文件名来服务端的检测,例如文件名为 7shell.php 。 因为PHP在使用 in_array() 函数判断时,会将 7shell.php 强制转换成数字7,而数字7在 range(1,24) 数组中,最终 in_array() 函数判断,导致任意文件上传漏洞 由于这里(上图第6行)并没有将 in_array() 函数的第三个参数设置为 true ,所以会进行弱比较,可以。 Day1 的分析文章就到这里,我们最后留了一道CTF题目给大家练手,题目如下:index.php

    1.3K20

    in_array函数缺陷

    在文章的最后,我们还会留一道CTF题目,供大家练习,希望大家喜欢。下面是 第1篇代码审计文章:Day 1 - Wish List题目叫做愿望清单,代码如下:? 由于该函数并未将第三个参数设置为 true ,这导致攻击者可以通构造的文件名来服务端的检测,例如文件名为 7shell.php 。 因为PHP在使用 in_array() 函数判断时,会将 7shell.php 强制转换成数字7,而数字7在 range(1,24) 数组中,最终 in_array() 函数判断,导致任意文件上传漏洞 由于这里(上图第6行)并没有将 in_array() 函数的第三个参数设置为 true ,所以会进行弱比较,可以。 Day1 的分析文章就到这里,我们最后留了一道CTF题目给大家练手,题目如下:index.php

    26520

    代码审计Day1 - in_array函数缺陷

    在文章的最后,我们还会留一道CTF题目,供大家练习,希望大家喜欢。 由于该函数并未将第三个参数设置为 true ,这导致攻击者可以通构造的文件名来服务端的检测,例如文件名为 7shell.php 。 因为PHP在使用 in_array() 函数判断时,会将 7shell.php 强制转换成数字7,而数字7在 range(1,24) 数组中,最终 in_array() 函数判断,导致任意文件上传漏洞 includeconfig_default.inc.php 中找到,为 $conf = array(0,1,2,3,4,5);由于这里(上图第6行)并没有将 in_array() 函数的第三个参数设置为 true ,所以会进行弱比较,可以 Day1 的分析文章就到这里,我们最后留了一道CTF题目给大家练手,题目如下:index.php

    33010

    编码在网络安全中的应用和原理

    UTF-8:URL编码:编码引起的安全GBK编码GPC这个相信大家都听说,但是不知道大家有没有仔细思考为什么呢?拿这个例子带大家深入理解编码和安全的关系。 现在版本的PHP一般默认不开启,不利用addslashes()函数来滤数据依旧很普遍。首先什么是GBK编码GPC呢? UTF-8编码引起的编码上面已经解释UTF8编码的定义了,所以不妨设想一下,一个ASCII编码是不是除了0加ASCII外,可以自定义字节呢? 不同程序对畸形编码的处理方式不同拿一道CTF的题目来给大家介绍,首先是一个名叫ctf的数据库,其中表名为name,字段id有且仅有字符型数据”ctf”,PHP源代码如下图怎么样进行拿到flag呢?? 总结编码安全应当引起我们大家足够多的重视,在我们平时开发尽量统一编码字符集,很多时候WAF出现困难也可以尝试利用编码特性来进行

    42560

    点击!AWD攻防解题技巧在此!

    在百越杯CTF比赛中,小学弟通抓取访问日志得到漏洞利用的方法,于是斗哥决定拿到源码,分析题目的考点,为小伙伴们排忧解难。 题目可以直接利用的大致有3个漏洞,登录接口万能密码、任意重置密码漏洞、上传漏洞、以及反序列化。其中有个文件包含和eval()代码执行的没防护规则,所以没有进行分析。 ,因此可以通构造万能密码adminor 1#或者or 1#登录。? ,导致无法直接执行cat flag,这个问题首先想到的是__wakeup()魔术方法,后面才考虑到之前小密圈中说的利用环境变量一些关键字符的方法。 很多考点其实在往年的CTF中就有出现了,特别是反序列化的这个考点,拿到手时候第一想到的是__wakeup()方法,后面翻笔记才想到可以用之前圈内讨论的空格等字符的方式执行命令,今年AWD是还考到了代码审计

    948100

    扫码关注云+社区

    领取腾讯云代金券