好好学习,天天向上,目录如下:
WEEK 1 加了报错的注入 后台登录 上传绕过 WEEK 2 没时间解释了 welcome to bugkuctf never give up
WEEK 1 加了报错的注入实验吧: http://ctf5.shiyanbar.com/web/baocuo/index.php
查看页面源码,注释说明有sql注入然后测试一下username和password,发现有过滤
bp简单爆破一下过滤字符,得出结果:
username过滤了 ( ) = # 等字符以及 order by 等关键字, password过滤了 # = ; 等字符以及 updatexml() 和 ext() 两个报错函数。
在伟大的搜索引擎的帮助下,我们查到了这两个报错函数的信息,顺便搜到了注入格式。
爆数据库测试一下可用
然后爆表名,列名,flag,注意到 = 被过滤,换 LIKE ,结果 LIKE 也被过滤,于是换上了正则 regexp ,同样 show 也被过滤。
payload: username=1' and updatexml/*&password=*/(1,concat(0x24,(select database()),0x24),1) and '1 username=1' or updatexml/*&password=*/(1,concat(0x3b,(select group_concat(table_name) from information_schema.tables where table_schema regexp database())),1) and '1 username=1' or updatexml/*&password=*/(1,concat(0x3a,(select group_concat(column_name) from information_schema.columns where table_name regexp 'ffll44jj' )),1) and '1 username=1' or updatexml/*&password=*/(1,concat(0x3a,(select value from ffll44jj)),1) adn '1
看了dalao的wp后发现password并没有过滤 exp() 函数可以直接利用 password 构造payload,不用分割注入。
flag{err0r_b4sed_sqli_+_hpf} 上传绕过实验吧: http://ctf5.shiyanbar.com/web/upload/
这道题看上去是一个文件上传漏洞,查看源码,注意到了 hidden 表单,感觉有用。按要求传文件,报错要jpg,传jpg又报错要php,估计是有两次验证。
直接字符截断没有用,想起那个表单,估计是要构造路径截断。 构造路径,进hex改包再发即可得flag!
flag{SimCTF_huachuan} 后台登录
实验吧: http://ctf5.shiyanbar.com/web/houtai/ffifdyop.php
源码有代码,估计是要构造md5注入。怎么构造? 怎么构造? 怎么构造? 算了看wp吧 …… 直接用文件名 ffifdyop 构造md5有了 'or'xxxx' 的语句,注入成功,告辞。 flag{ffifdyop_has_trash} WEEK 2 1. 没时间解释了
moctf: http://119.23.73.3:5006/web2/index2.php
抓包阻止重定向->路径构造->时间竞争
常规性的 F12 查看源码,并没有找到什么有用的信息,测试一波 .svn 和 .git 的源码泄露,仍然并没有什么有用的信息,遂放弃。
自闭一段时间后,观察到url index2.php 觉得可能有问题,然后尝试访问 index.php ,重定向回了 index2.php ,于是改用BP截包,得到 index.php 返回如下:
访问 uploadsomething.php ,令人熟悉的表单映入眼帘,随意输入后显示:
估计是一个路径构造,写了php一句话webshell并没有连上,试着访问了一下返回 Too Slow ,根据标题和该返回猜测是一个 时间竞争 ,同时观察到不同提交返回的base64的路径是相同的,那么可以写脚本去构造路径并读取。
然而……
脚本都是 Too Slow !这不合理啊!后来用BP Intruder持续抓包,获得 flag ,至于脚本比BP慢这实在没有想到。
2. welcome to bugkuctf
bugkuctf: http://123.206.87.240:8006/test1/
php协议->文件包含->php反序列化
这是一道硬核题。
常规 F12 得到源码:
尝试直接访问 hint.php 无果,注意到源码中文件包含函数 file_get_contents() ,
我们可以利用php协议操作数据流的方法,将字符串构造文件利用 php://input 上传 $user ,再利用 php://filter 获取返回的数据里,相关参考PHP官方文档: http://php.net/manual/zh/wrappers.php.php 。
php://filter 相关信息:
利用这个方法我们可以这样构造 payload :
从何获得 index.php 和 hint.php 的源码 base64 :
继续代码审计。
观察得到这是一个php反序列化漏洞,利用在 hint.php 中得到的类名为 Flag ,使用的是 __toString 魔法函数,由此我们可以构造反序列化 payload 为 O:4:"Flag":1:{s:4:"file";s:8:"flag.php";} ,
并得到 flag :
3. never give up
bugkuctf: http://123.206.87.240:8006/test/hello.php
php任意文件读取->解码*3->字符截断
这道题比较逗逼。
常规 F12 得到两行代码,带入注释里的 1p.html 发现重定向到了BugkuCTF的首页,于是Postman抓包得到如下结果:
URL解码一把梭!
base64解码一把梭!
又是URL?一把梭!
经过三次大起大落的编码转化,最后得到源码:
注意到代码中有两处矛盾:
$id 即是0又不是0 $b 的首位字符必须是 4 又不能是 4对于前者,我们采用php的松散比较,利用 'aaa' == 0 的特性绕过,对于后者,我们采用字符截断(对于php版本的判断可以利用 $data 实现,这里已经确定是可截断的了)
那么!那么!那么!
就阔以构造粗配楼德 payload :
id=aaa&a=php://input&b=%00abcde
得到 flag :
似乎安排得明明白白…直到我看到其他大佬的wp…
我的表情:
看来似出题人忘记屏蔽了,不然这题也是小硬核。