攻防世界CTF-web新手练习write-up

攻防世界CTF-web新手练习write-up

攻防世界这个ctf平台我在去年就拿到了注册邀请码,当时参加线下活动,赛宁网安的小姐姐给我的,现在可以直接注册了。但是之前一直没有在上面刷过题。因为打算这个暑假好好研究一下ctf,恰好今天有空,大概花了半个多小时的时间吧,把上面web的新手练习题做了一遍,总的来说很简单,每道题涉及的知识点也很单一。虽说简单,还是写一下自己的解题思路。

1.view_source

直接f12或者ctrl+u查看源码拿到flag,不废话。

2.get_post

就是简单的发一个post和get请求就完事了。hackbar直接干就完事了,真香。至于用burp,就大材小用了。

然后

就拿到flag了。至于看评论有兄弟说 burp抓包改为post提交为什么不可以呢?

这位朋友肯定是刚入门,我简单解释一下burp在修改发包方式时,不是直接改

注意细节

burp抓包直接把GET /?a=1 HTTP/1.1修改为POST /?a=1 HTTP/1.1,然后在body添加b=2是不会成功的;需要额外增加头部Content-Type: application/x-www-form-urlencoded,这样服务器才能识别到你用POST提交的数据。而通过burp转换请求方式,会自动加上这个头部。

3.robots

考察robots协议,很简单。引用百度对robots的介绍。

robots.txt文件是一个文本文件,使用任何一个常见的文本编辑器,比如Windows系统自带的Notepad,就可以创建和编辑它[1]  。robots.txt是一个协议,而不是一个命令。robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。

因为robots.txt在网站根目录,所以直接在url上加上robots.txt访问即可。

访问这个页面就拿到flag了。

4.backup

这个我觉得是个常识问题,直接在index.php后面加个.bak,所以url:xxx:port/index.php.bak 直接下载,再用记事本打开就好,没有难度。

5.cookie

我现在一直遵循一个原则,能用浏览器开发者工具解决的问题,就坚决不用其他工具。Chrome真好用!

这道题在开发者工具里的network里查看response headers。

很明显提示我们打开cookie.php这个页面。同样,flag就藏在了response header里面。

6.disabled_button

这个我感觉迷迷糊糊就拿到flag了,超简单….直接把input后面的disabled删掉就可以了。

7.simple_js

 

8.xff_referer

考察的就是xff和referer是可以伪造。照样用hackbar添加这两个头部即可。

hackbar真香。

9.weak_auth

这道题怎么说,本来想用burp跑字典的,结果随手试了个123456就拿到flag了。我……

10.webshell

这个没有任何难度,菜刀连上去即可。

11.command_execution

就是一个简单的命令执行

执行了后pwd命令获得了当前的路径。下一步就是要找到flag的位置并读取它。这里直接用find命令从根目录下查找即可,因为通常文件名都是flag.txt,但是我也不排除没有后缀名的情况,就用通配符*表示了。找到路径后直接cat就可以了。

这里总结一下linux下几个运算符的含义,&和&&,|和||区别

&  表示任务在后台执行,如要在后台运行redis-server,则有  redis-server &

&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo ‘hello‘ && echo ‘nihao’

| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo ‘hello’ | wc -l

|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo “failed”

12.simple_php

考察的是php弱类型比较

php中有两种比较符号:

==: 先将字符串类型转化成相同,再比较

===: 先将字符串类型转化成相同,再比较

字符串和数字比较使用==时,字符串会先转换为数字类型再比较 php var_dump('a' == 0);//true,这里'a'会被转换数字0 var_dump('123a' == 123);//true,这里'123a'会被转换为123

在判断语句里,要求a==0,并且a不为0;看到两个等号,因为php是弱等于,这里可以让a等于一个字符串即可,在“==”判断是,字符串会被转换成“0”,a满足条件。然后是b,is_numeric这个函数要求b不能是数字,下面要求b大于1234,这里可以让b=2345a,这样b就不会被判断为数字,且大于1234,b满足条件。

zgao

如果有什么技术上的问题,可以加我的qq 1761321396 一起交流。