高手进阶第一题Cat
看了看源码,试了试注入,一番摸索后才发现,这个系统原来是ping一个ip地址的功能,并且和新手区一个同样也是ping的题目不同,这里无法命令执行,大概是进行了过滤处理
这确实让我找不到突破点,无奈寻求网络帮助,看了一步提示,说是16进制编码,%80属于范围外的值,会报错,于是就得到下面这个页面
里面有部分js和html源码,身为菜鸟的我自然认为要进行代码审计,看看能不能绕过过滤检测什么来进行命令执行,可最后实在看吐了,代码也太多了,无奈继续看提示,原来里面暴露的文件位置才是关键,Ctrl+F搜索/api/,里面有21处,但仅有一处下级目录是/database,看来突破口在这里!
直接?url=/opt/api/database.sqlite3,结果网站没反应,这下可真没辙,只能再看提示,原来要用@符号加上完整地址才可以,原理触及我的知识盲区,就不多说了。添加了@后,回车,果真出现了不一样的信息,但是还是相当冗长,查找flag、cyberpeace等等都没有像样的,无奈最后看了一眼答案,搜索关键字ctf,才总算找到了flag
这道题目可真是把我打击地不轻,一丁点门路都没有,全程在错误的方向上浪费了不少时间,只有一步步按照答案地步骤来,不得不承认自己还是相当的菜,对于很多场景都不了解,这道题做完后好长时间没做web题了,仗着大学密码学学得好,花了些时间把crypto的新手题全部做完了(其实也看了不少提示),这好好休息了一天,这才接着来到web区。
高手进阶第二题ics-05
还是ics场景,啥都不能点,就设备维护中心能进入,进去了啥都不显示,突破口一看就在url上:
这个学过,page参数一般是文件包含,利用php伪协议读出源码并把它base64编码输出(要不然就直接在网页上执行看不到源码了),这里的命令是:
page=php://filter/read=convert.base64-encode/resource=./index.php
记住就好了!在线base64解码后,根据题目提示留有后门,那么有了源码就进行代码审计,根据注释很容易找到后门:
可以知道后门逻辑,需要burp改包XFF为127.0.0.1,然后get传参,这里的漏洞考点是preg_replace()函数的命令执行漏洞,一旦pattern是/e模式,那么就会把替换之后的结果当作php代码直接执行,就像eval()函数一样。
接下来有了明确的目标,开始使用burp改包,先使用system(“ls”)得到文件目录,然后system("cd+可疑文件&& ls"),得到可疑文件夹的目录,一直向下找到flag.php,然后使用cat命令拿到flag。
其中有一个问题就是,空格有可能不能作为get的参数传入,是因为编码问题导致的,这就需要知道空格可以用+号代替。
这一道题做起来就很舒坦,知识点都会,不用上网搜答案,只需要搜搜用php伪协议把源码base64显示出来的代码就好,做完之后又对自己有了信心,淡淡的成就感,而不是Cat那题满满的挫败感——它属于我的知识盲区吧,搜了答案也不懂那种。不过呢,学海无涯,或许学的越多就越会发现自己知识量越渺小吧,以前还认为发现了许多未知的知识会很兴奋地去学习,可经过这一战,才暗暗感到知识的无穷尽,一个人怎么可能在某个领域无所不知、无所不能。学安全的我们,广泛涉猎没错,但是必须得有一门精通,能够一招鲜,并且要学会知识的取舍。大学的知识,毕竟是上个时代的知识,时下的技术是硕士在学习的,前沿技术是博士去研究的。作为一个大四学生,不能读死课本,课本里的其实片面,有很多偏冷的基础知识并没有实涉及,这就需要我不断在答题、竞赛和实际工作中去弥补。