1.training-WWW-robots
打开靶机,
大概的意思就是
说到有一个robots.txt,我们就去访问它。
可以看到disallow是一个flag.php。disallow是不希望被访问的一个url。也是我们要的flag。我们就访问flag.php。
flag就到手了。值得注意的是。disallow那一项是一个fl0g,不是flag,有点小坑。
robots.txt是网络跟爬虫之间的协议,它是爬虫访问的第一个文件,告诉爬虫那些权限是被允许的。爬虫会根据该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。
2.php2
打开靶机,顺便翻译一下。
看了一下源代码,没有找到任何信息。
打开kali,dirsearch一下看看能找到什么。
可以看到有一个index.php的文件。看了别人的wp我才知道phps可以查看php文件的源代码。哪里去看看源代码。
做了一会儿题我才发现这个代码不全,鼠标右键再查看这个页面的源代码。
这才是完全体的代码。大概意思就是用get请求上传一个id,如果id进行url解密后等于admin,就显key,如果id的类型和值全部都等于admin的话,就显示not allowed 。也就是说上传的id解密后得等于admin,但是类型不能是字符串型。我能知道get请求自带一次url解密,所以我们得上传一个id,两次url解密后等于admin。这里我们打开Burp suit进行加密
将两次加密后的admin以get请求上传后,得到flag。
3.unserialize3
serialize是序列化,un是否定前缀,所以unserialize就是反序列化。
打开靶机
看一下代码,class定义了一个类,成员为变量flag,flag赋值为111。function是用来申明_wakeup这个函数的。在php中,进行反序列化时,会优先执行_wakeup函数提前exit,所以必须绕过_wakeup函数。
先说一下序列化,为了有效地存储或传递数据,同时不丢失其类型和结构,经常需要利用序列化和反序列化函数对数据进行处理。序列化是将变量或对象转换成字符串的过程。序列化的格式为:对象类型:长度:"类名":类中变量的个数:{类型:长度:"值";类型:长度:"值";......}。
这里的对象类名是:xctf;长度为4;成员属性是flag;个数为1;长度为3;内容为111。所以得到的序列化为: 0:4:“xctf”:1:{s:4:“flag”;s:3:“111”}
在进行反序列化时有一个漏洞,可以通过使序列化字符串中表示对象个数的值大于其真实值以跳过 _wakeup函数的执行。
在本题中,表示对象是flag,其个数为1我们只要把以1改为任意大于1的数,即可绕过_wakeup函数,通过看代码我们可以知道上传序列的方式是通过get请求上传
如图所示
4.view_source
打开靶机,通过题目描述可以知道鼠标右键是不能用的,所以我们按f12调出控制台查看源代码。
5.get_post
打开靶机,它让我们用get请求提交一个名为a,值为1的变量。
然后让我们用post请求提交一个名为b,值为2的变量
说一说get和post请求,get 和 post都是http请求方式。get请求一般是去取获取数据(其实也可以提交,但常见的是获取数据);post请求一般是去提交数据。get请求是放在url中的,因此受长度限制,post请求没有长度限制,但是不能用url传参,我一般都是用hackbar插件。
就是这个 。
6.robots
和第一题一样。
7.backup
打开靶机
问index.php的备份文件名,我也上网搜了一些:.git .svn .swp .svn .bak .bash_history。这些后缀名都是备份文件名,我们也不知道是哪一个。用dirsearch扫描一下目录。
可以看到有一个index.php.bak就是它的备份文件了,我们直接访问就可以得到flag。
8.cookie
打开靶机
问什么是cookie 。cookie是什么我就不多说了,我们直接按f12调出控制台,选择储存
可以看到cookie是以cookie.php的形式存在的,我们访问cookie.php
它让我们看回应。那就用burp suit代理一下
选择橙色的那个 再点击Repeater再点击那个Send
从右边的response那里可以看到flag
9.disabled_button
打开靶机
是一个没法按的按钮,我们按f12调出控制台,
划线哪里有一个disabled=""我们双击把它删掉,就可以按下去了 。
最后,跟兄弟们分享几张图片放松一下眼睛
ps:图片来自夸克