每日一Web√
一个学期的社团学习在昨天已经结束啦,离期末考试还有一个月,学习任务有点点紧张,但还是想把CTF的学习坚持下来。所以就从今天开始进行每日练习啦~
启动靶机,然后一张滑稽的笑脸静静地看着我......
啊这...遇事不决“F12”!然后在html模板里发现似乎有有趣的东西被注释掉了!
这!php!我记得这东西!一串我看不懂的代码→_→罢了,想办法先把源码弄出来呗~
输入http://f38f4767-7fd9-4dab-83e6-7eb384beb57b.node3.buuoj.cn/source.php获取源码,再复制粘贴到sublime text,学姐说这样代码更容易看懂(虽然我现在还是看不太懂)
然后就是php代码审计...我审了个寂寞...但是!百度一下我就知道!
以下摘自博客园—笑花大王
!empty($_REQUEST['file'])要我们的file变量不为空我们先进行分析这段代码 首先看80行第一个要求
is_string($_REQUEST['file'])要求我们传进来的值是字符串类型
emmm::checkFile($_REQUEST['file'])这里将我们的的值传到emmm类里面的checkFile函数
这三个值通过&&逻辑与运算符连接也就是要求这块函数的返回值要全为真才能执行if里面的文件包含的代码 否则就执行else里面的图片代码
先来熟悉几个函数
//mb_strpos():返回要查找的字符串在别一个字符串中首次出现的位置
// mb_strpos (haystack ,needle )
// haystack:要被检查的字符串。
// needle:要搜索的字符串
//mb_substr() 函数返回字符串的一部分。
//str 必需。从该 string 中提取子字符串。
//start 必需。规定在字符串的何处开始。
//ength 可选。规定要返回的字符串长度。默认是直到字符串的结尾。
访问网址http://03b2cc85-7af4-439b-a06e-41da80ff6505.node3.buuoj.cn/index.php?file=hint.php
发现flag在一个叫fffflllllaaaagggg的文件里,然后开始../寻找
http://03b2cc85-7af4-439b-a06e-41da80ff6505.node3.buuoj.cn/index.php?file=hint.php?../../../../../ffffllllaaaagggg
找到flag
题目中的php源码里还有很多我看不懂的函数,等我查查资料问问大佬再来补充!
总的来说,虽然这道题很简单,我还要百度才做得出来,但是嘛,至少会抄答案了不是?哈哈哈
还记得之前做一道题百度了答案都不会做,就离谱。
小橘冲鸭!!!
2020.12.24
今天学长逐句讲了讲代码!!!
http://03b2cc85-7af4-439b-a06e-41da80ff6505.node3.buuoj.cn/index.php?file=hint.php?../../../../../ffffllllaaaagggg
在这个payload里面“?”是一种格式,大概就是开始符一样的东西吧~而且不能多次出现哦~
“file=hint.php”的意思就是给file附上hint.php这个值,从而进入某个if循环,打开了hint.php的内容。
新知识get√
大概和input差不多?