使用phpstudy,将文件放在WWW根目录下,浏览器访问即可
总结:解密
warmup
查看源码
提示source.php
并且还提到了一个hint.php,查看
提示flag在这个里面
先看前面的源码source.php
- request接收参数file,判断是否为空、是否是string、checkfile
- 如果满足,则包含file
- 否则打印滑稽
所以应该是要把ffffllllaaaagggg文件包含进file,关键就是怎么绕过checkfile
接下看重点看checkfile函数,白名单被写死,return true的情况只有三种
- file在白名单中
- 在file末尾加了个?,?前的部分在白名单中
- 先将file进行url解码,然后同2
这里的file就是参数page,加?的目的应该是通过添加的?找到末尾坐标,但是正是这多此一举给了可趁之机,只需要先发制人,提前在file中加一个?,就可以让它解析错误,截取我们自己添加的?前面的部分
因此payload可以是hint.php?..ffffllllaaaagggg
但是由于ffffllllaaaagggg的路径不清楚,只能一个一个试,不停添加…/
最终拿到flag
里面还有一个重点,就是在include ‘file’的时候,file是string类型的,然后从file中解析文件路径,因此才可以从hint.php?..ffffllllaaaagggg这种格式中解析出正确的ffffllllaaaagggg路径
总结:php代码审计,绕过check
upload1
尝试上传任意txt文件,结果
选择一张图片上传
查看源码
发现前端对文件名过滤
使用burpsuit抓包发送php文件
成功上传,蚁剑连接
总结:文件上传漏洞
NewsCenter
观察题目,只有一个search输入框可以挖掘漏洞,初步判断sql注入。
但是一旦输入单引号,服务器就崩
使用burpsuit抓包
直接上万能密码,成功回显所有news,说明的确是sql注入
先判断select列数,3
没有过滤,并且回显2,3。应该就是一道简单的注入题
总结:sql注入
Web_php_unserialize
补充:正则表达式规则
以下是一些常用的正则表达式元字符和规则:
- 普通字符:这些字符直接匹配其自身。例如,字母
a
将匹配字符串中的字母a
。 - 元字符:具有特殊含义的字符,例如
^
、$
、.
、*
、+