1、robots
通过百度简单了解了robots协议,“网站可建立一个robots.txt文件来告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取”
于是访问
1 | 61.147.171.105:57289/robots.txt |
出现以下界面,Disallow定义是禁止爬寻f1ag_1s_h3re.php
那就尝试访问
1 | 61.147.171.105:57289/f1ag_1s_h3re.php |
flag就出现了。
2、view_source
ctrl+u即可查看源代码,flag就出现了。
3、backup
题目描述是备份文件,进入题目场景后也显示“你知道index.php的备份文件名吗?”,于是直接搜索了备份文件的拓展名是什么,是”.bak”,访问
1 | 61.147.171.105:63847/index.php.bak |
后自动下载了一个文件
直接用记事本打开,就显示flag。
4、cookie
题目中提到cookie,所以简单了解了cookie的相关知识。(但还是没有思路……)
因为本周主要任务就是学习使用burp suite,所以尝试了一下抓包
Cookie那一行给了提示,于是试图直接访问
1 | 61.147.171.105:56564/cookie.php |
出现如下提示
5、disabled_button
题目中提到前端知识以及场景中提到“一个不能按的按钮”(之前好像看过一点点相关知识,所以直接搜索了“HTML按钮跳转”)
查看题目场景页面的源代码,对比发现应该是采用第四种实现方法
应该是disabled有问题,于是在“检查”页面删除disabled后,flag就可以点击了,点击后就会出现答案。
6、get_post
题目中提到HTTP两种请求方法,于是就去搜索了相关知识,但是看完好像还是没有什么思路,所以又想着找找实例会不会更好理解一些,但里面的实例还是使用java来构造请求(java我不会……)。后面看见题目要求用GET方式提交变量,就直接搜索了“用GET方式提交变量”,就找到一篇完全符合要求的文章:使用GET与POST传递变量(传参)的方法
使用GET传递变量:在所需传递变量的URL后面加上/?变量名=值
用POST方式提交:具体过程按Fn和F12键启动Max Hackbar,点击Load URL按钮载入当前页面URL,然后勾选Post data,填入b=2后点Execute执行,就出现flag了。
7、weak_auth
刚开始随便输入了用户名和密码,跳出please login as admin,那应该用户名就是admin。
看题解,这道题可以暴力破解。
过程如下:
抓包
抓包后发送到Intruder模块
Positions设置是选择要暴力破解的位置。在默认情况下,burp会自动将所有的变量都勾选上。
实际操作中,往往针对单一点,选择clear$,此时所有默认的爆破点都已消失。
用鼠标选中需要暴力破解的变量的值。然后右侧选择add$,这样就添加了一个爆破点,这个爆破点的payload位置是在两个$之间的部分。
点击载入中……选择字典(字典是在GitHub上下载的)
开始攻击,理论上来说,密码正确和错误返回的长度不同,所以可以根据长度来找出密码(对长进行排序,发现123456应为密码)
输入用户名密码登录,flag就出现了。
8、baby_web
“想想初始页面是哪个”,那应该是需要访问index.php,访问过后还是跳转到
1 | 61.147.171.105:58135/1.php |
先打开如下界面
然后访问
1 | 61.147.171.105:58135/index.php |
就会响应
点击index.php,就会出现如下界面,即得到flag
9、simple_php
题目出现下图这样一段代码
通过了解PHP相关知识, $_GET用于收集来自 method=”get” 的表单中的值,is_numeric() 函数用于检测变量是否为数字或数字字符串。同时PHP 是弱类型语言,包括松散比较(使用两个等号 == 比较,只比较值,不比较类型)和严格比较(用三个等号 === 比较,除了比较值,也比较类型)
阅读代码可得到,第一个if语句表示如果a==0且有一个非0值则会输出flag1,第二个if语句表示如果b的值为数字或数字字符串则退出程序,第三个if语句表示如果b的值大于1234,则输出flag2。
从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),所以可以直接在地址栏进行构造跳转。为了满足题目条件,可以使a=0b,b=1235a。在地址栏添加/?a=0b&b=1235a后访问,便可得到flag。
10、Training-WWW-Robots
题目中提到 Robots_exclusion_standard,搜索得到是机器人排除标准(对爬虫行为做出一定的限制),本质是robot.txt,所以尝试访问
1 | 61.147.171.105:56468/robots.txt |
出现以下界面
Disallow是告诉爬虫哪些地方是不能访问的,后面也有/fl0g.php,那说明flag应该就在这了,所以访问就得到flag
11、ics-06
题目中提到云平台报表中心,进入题目场景后也只有报表中心能点击。最开始看到日期范围,以为是需要找到合适的时间填入,页面中出现2018年1月1日,以为是和其相关的日期……后面发现毫无关系。搜索题解得知,关键在于地址栏的id。这时候就应该采用暴力破解,所以抓包后发送给Intruder,设置好下图参数后点击开始攻击出现了错误
(解决方案:burp intruder爆破出现 Payload set 1: Invalid number settings的解决办法)先点hex 后点 decimal 再开始攻击(因为之前用过这个功能,需要手动让它刷新)。
得到id应为2333,所以访问
1 | http://61.147.171.105:61681/index.php?id=2333 |
得到flag。
12、PHP2
进入题目场景后,出现“Can you anthenticate to this website?”,先尝试访问index.php,但是没有什么反应,想查看源码,也无法查看。题目中提到anthenticate(或许是认证?),于是搜索了“php 认证”“web 认证”,看完相关还是没有想法。所以搜索了题解。
首先,知道了phps文件就是php的源代码文件,通常用于提供给用户(访问者)直接通过Web浏览器查看php代码的内容。
访问得到下图的php源码
阅读代码,严格比较(用三个等号 === 比较,除了比较值,也比较类型),urldecode() 解码 URL 字符串函数。用于解码给出的已编码字符串中的任何 %##以及中文等被编码的内容。
不能让第一个if成立,所以可以让对admin进行一次编码,即i%61%64%6d%69%6e,而后经过urldecode,又变成admin,满足第二个if条件。但是,当我们在浏览器输入时,浏览器会自动进行一次url解码。所以要对admin进行两次编码,即%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65
访问就可得到flag
13、unserialize3
进入题目场景后,出现了一段代码,看下来之后先查找了一下__wakeup()
是什么含义。
里面说执行unserialize()
时,先会调用__wakeup()
unserialize()
函数用于将通过serialize()
函数序列化后的对象或数组进行反序列化,并返回原始的对象结构
serialize()
函数用于序列化对象或数组,并返回一个字符串。serialize()
函数序列化对象后,可以很方便的将它传递给其他需要它的地方,且其类型和结构不会改变。
但是了解完还是没有思路,所以找了题解。
看代码,这里应该是希望不执行__wakeup()函数。
题解中提到这个函数的执行漏洞是一个字符串或对象被序列化后,如果其属性被修改,则不会执行__wakeup()
函数,这也是一个绕过点。所以将这个对象进行序列化传值,并修改属性就可以绕过这个函数。
这里的1就是表示属性,所以只要修改掉1,就不会执行__wakeup()函数。
那么访问即可得到flag。
参考资料: