Buuctf [HCTF 2018]WarmUp

在这里插入图片描述打开之后先用F12看看有什么,可以看到提示source.php
所以尝试在url后加/source.php看看能得到什么
在这里插入图片描述得到一段php代码
可以得出这道题的考点是代码审计
然后细读一下代码的大致含义

在这里插入图片描述函数从此处开始,接收变量file,传递到checkFile函数里
代码审计主要是另一半图的代码,大致可以说成是四个if,如果全部返回true,就可执行上面图的include语句,访问文件

第一个if语句 判断变量page是不是字符串,不是则返回false
第二个if语句 再判断page是否是白名单数组中的字符串,是则返回true ,然后将变量过滤,substr函数作用是将字符串分开,
mb_strpos($page.’?’, ‘?’)先将page加上一个问号,然后计算问号前的字符串的数量,并返回这个数量的值
假设我们的page=‘ffff?id=123456?pwd=123456’ 返回值则是4,substr分割出来的字符串则是ffff
第三个if语句 对过滤后的page进行白名单检测,然后用urldecode()函数编码,"?"的编码为%253f 在进行一次过滤
第四个if 语句 page变量过滤后还有白名单中字符串则返回true
https://www.cnblogs.com/leixiao-/p/10265150.html 主要考点为文章中的任意文件包含
模板是
?target=db_datadict.php%253f/…/…/…/…/…/…/…/…/…/Windows/DATE.ini
可以看出有两个文件source.php和hint.php
打开hint.php 可以得到
在这里插入图片描述之后按照之前的模板就可以构造payload了
?file=source.php%253f/…/…/…/…/…/…/…/…/…/ffffllllaaaagggg
或者
?file=hint.php%253f/…/…/…/…/…/…/…/…/…/ffffllllaaaagggg
因为是新手所以构造payload还只能模仿,看了大佬的博客(https://blog.csdn.net/qq_42967398/article/details/91127332
)后了解了一下原理

传递一个参数file=source.php?/…/…/…/…/…/…/ffffllllaaaagggg,目录穿越,还要把?进行两次url编码,所以最后的payload为file=source.php%253f/…/…/…/…/…/…/ffffllllaaaagggg,第一次验证过不了,第二次截取完也过不了,第三次,经过url解码之后,我们构造的payload就变成了source.php?/…/…/…/…/…/…/ffffllllaaaagggg,它是截取?前面的进行校验,我们这的source.php在白名单中,所以返回true,最后通过目录穿越的到ffffllllaaaagggg里面的内容

得到flag
flag{482ec805-71b0-4aa5-863c-bf39163adc76}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值