杂技!

First Post:

Last Update:

ISCTF:

千年樱:

这道题令我印象深刻,主要在第三步

参看源码我们可以得知这个程序会读取badchar这个文件,同时需要满足文件中的内容是sakura for ISCTF

我们查看文件中的内容,此处只需让output=114514a即可绕过,而我们看到文件内容发现与sakura for ISCTF没关系

这里我们需要用到一个神奇小工具php_filter_chain_generator,他可以完全控制传递给 PHP 中 require 或 include 的参数,意思是我们可以直接传一个sakura for ISCTF上去 (他似乎可以直接达到rce的效果,有待考证)

我们使用工具构建出payload,直接使用是不行的,会显示文件中没用内容,这时候把前面第一个过滤器给他删了,mark一下,不知道原因捏

还没完,此时构建出的字符串后面会有一大坨鬼东西,好像是php的标签,我们在payload最后面加一个string.strip_tags来去除,注意要使用|链接

此时就可以通过if了,附上开源工具的链接:Synacktiv/php_filter_chain_generator

攻防世界杂谈

  • robots协议

  • 页面重定向,通过网络可以监控

  • ascii十进制编码(随波逐流一把梭)

  • burp根据payload进行爆破

  • index.php 后面加个s可以看到源码

  • thinkphp各个版本的漏洞都有现成的payload,直接找

php反序列化

  • php执行反序列化unserialize() 会先查看有没有__wakeup方法,如果有会先执行 __wakeup方法

绕过方法:在序列化的字符串中说明的对象个数要比实际的对象个数要大,那么将不会执行__wakeup这个方法

php文件包含(include)

php://伪协议: 构造php://input再post php代码来达到rce

data://伪协议: 构造data://text/plain,来达到rce

两个函数strstrstristr这两个函数能搜索字符串中有没有特定字符,前者不区分大小写,后者区分