一点感想
自己大学本科已经学了三年的网安,web题主要特点就是门槛低,学精难,实际应用的时候突然发现有些基础都不牢固,最近正好有时间,理清思路,从头来过,把基础巩固一下,顺便在此做个记录,为了打牢基础,我直接按照解出数从多到少依次递进,持续更新,我尽量从一个什么都不会的小白的视角去写,因为自己本来就是小白哈哈哈
[HCTF 2018]WarmUp
小白的起始第一步,打开网页先F12看下源码,以后无论什么网页,没头绪就F12 这里有个注释说要看source.php,html文档里面注释符号是用如上方式使前端不显示该信息,初阶web题一般采用这种方式进行提示,那我们就访问一下source.php 直接是源码,那就审计就完事了,这里刚刚入门的小白一定要注意,遇到不懂的函数一定要百度,这可不是高考英语完形填空,你看上下文就能明白的,多积累以后自然有用,这里is开头的函数就是字面意思,意思就是是不是后面的类型,注意前面的是函数,调用从后面的主函数开始,不要开始傻傻的看函数不明所以(就是我),先看下面的变量定义 观察发现这里接受了一个变量,$_REQUEST忘记了,查一查如下
request_order:这个配置项设置 PHP 将 GET, POST 和 Cookie 中的哪些添加到 $_REQUEST 中,并且指定了填充时的顺序。如果 request_order 设置为空,则填充的顺序会以 variables_order 配置项中的顺序为准。例如,设置为 request_order = “GP” 时,代表 $_REQUEST 将包含 $_GET 和 $_POST 的值,并且当 $_GET 和
P
O
S
T
中
的
键
相
同
时
,
_POST 中的键相同时,
P?OST中的键相同时,_POST的值将覆盖 $_GET 的值。
所以这里就先传GET值试一试,毕竟简便一些,这里传什么呢,打开hint.php看一下 
发现该信息,再审计整体函数,传一个参,必须要有且是字符串,通过checkfile检验才能包含,而这个checkfile是一个白名单,只能包含两个php文件,贴两个忘记用法的函数,也就是截取你的输入看是不是白名单里的,三次检查只要有一次是对的就行了,这里出题人考虑的很周到,所以你输入url编码还是直接输入都行
mb_strpos (haystack ,needle ):返回要查找的字符串needle在别的字符串hayback中首次出现的位置 string mb_substr( string
s
t
r
,
i
n
t
str, int
str,intstart[, int
l
e
n
g
t
h
[
,
s
t
r
i
n
g
length[, string
length[,stringencoding]] );截取字符。从str的开始位置计算。第一个字符的位置为0。第二个字符的位置是1,依此类推。
但是这实在是不好绕过,原来自己这么菜,百度启动,经过查阅资料,得到这是phpmyadmin 4.8.1的一个远程文件包含的漏洞,仔细一想,其实也能分析出来,按照问号截取,检查问号前面的字符串,我问号前面给一个合法输入source.php然后后面写一个我想要的东西不就行了嘛,这里的漏洞就是你可以使用…/…/访问web目录上级文件夹,一般是不行的,所以构造payload  成功文件包含得到flag  这里解释一下,有些术语可能刚刚入门看不懂也没事,例如上文的文件包含,但是诸如url,html之类非常基础的东西,还是需要先学一下,不然后面学习会有点困难
|