WEB–入门

CTF中的Web题型,就是给定一个Web网站,选手要根据题目所提示的信息,找到网站上的flag字符串。

我们需要掌握一些基本的语言,像PHP、Python、JavaScript等

Web框架:ThinkPHP、Flask等

在学习之前我们需要知道一些常识,也是最基本的常识--源代码

这是我们未来需要面对的最多的东西,有了源码大部分的题目都能找出漏洞

当然我们也不是经常能够遇到直接把源码放在明面上的情况,首先教大家怎么查看前端源码

1.f12

这样打开的就是源码,很多时候这个源码里面会藏着提示

2.鼠标右键查看页面源代码

练习题目1.攻防世界--view_source

之后就是我们需要了解的robots协议了,robots协议也叫robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。

怎么判断有没有robots协议呢?很简单,我们只需要加在URL编码后面就可以查看了,当然也可以用扫描工具对网页扫描观察是否有文件泄露

扫描工具:dirsearch(csdn搜索下载)

御剑(同样csdn搜索)

练习题目2.攻防世界--robots

第三个要讲的就是cookie

如果把人体比作一个web系统的话,cookie、session和token就好像人体的经络和血管一样,而web系统中的数据,就好像人体的血液一样。血液依靠着血管在人体内流动,就如数据根据cookie和session机制在web系统中流动一样。而web系统开发者就好比一个医术精湛的医生,医生需要十分清楚人体的经络和血液流向才能对症下药,而web系统开发者需要十分清楚cookie、session机制,才能迅速解决疑难BUG,开发出更好的web系统。

通俗来讲,我们打开计算机访问一个网页时就会有cookie产生,这是干嘛用的呢?不知道大家有没有偷偷玩电脑时害怕被发现就直接关掉网页的时候,我们第二次打开网页时就会发现我们居然还是之前那个界面,甚至之前浏览的文章或者视频都还是一模一样的。这就是cookie的作用--供电脑记录识别用户

我们每打开一个网页时就会产生一个独一无二的cookie,当浏览器第二次访问该web服务器时会自动的将该cookie回传给服务器,来实现用户状态跟踪

但是一般情况下,我们怎么查看cookie呢?

我们有两种方法

1.f12点击应用界面就会出现cookie,还可以对cookie的值和名进行修改

2.抓包

什么是抓包?

抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。

1.从功能测试角度,通过抓包查看隐藏字段

Web 表单中会有很多隐藏的字段,这些隐藏字段一般都有一些特殊的用途,比如收集用户的数据,防网络爬虫,以及一些其他用途。这些隐藏字段在界面上都看不到,如果想检测这些字段,就必须要使用抓包工具。

我们通常使用的抓包工具是Burpsuite(可以csdn查看怎么下载和使用)

练习题目3.攻防世界cookie

第四个,我们在做题时会遇到需要像网站发送信息的情况

这就有两种方法—-GET 和 POST 其实都是 HTTP 的请求方法

GET请求指定的页面信息,并返回实体主体。

我们平时在网站url编码上修改的情况就是属于用get方法

POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

这道题就是需要用get和post两种方法

我们需要post上传“id”参数,还要get上传“json”参数,而且会检测经json_decode编码之后的值。

我们可以用插件–hackbar(该插件的作用是为网站提供上传的路径)

如下图:

打开插件之后我们的第二步就是get请求

第三步就是post请求

在火狐上下载插件如图:先点击设置,选择扩展和主题

练习题目4.攻防世界-get_post

我们只需要这样

必须要加上问号

然后添加b=2

练习题目5–[SWPUCTF 2021 新生赛]easy_md5

我们来分析一下这个题目

首先需要用get请求和post请求上传两个参数,参数值暂时没有显示

继续往下面看

这个是重点,第一:name参数和password参数不能相等。第二:name参数和password参数需要检测MD5值(两个参数的MD5值必须一致)

我们的思路是这样,我们定义的两个参数必须要不等,但是MD5加密之后又是相等的

方法有二

1.利用MD5不能处理数组的特性--任何数组进入判定之后都会是0!

那我们如果定义两个参数为不同的数组,是不是就可以绕过了?

如:

第二种方法就是,我们需要知道,有一些0e开头的字符串同样是MD5加密之后为0的

随便上网找找

这样定义也行

最后要讲的就是文件上传了,文件上传一类的题目思路比较清楚--我们目标就是要往网站上放入木马,但是别人肯定不会这么简单就让我们上传成功木马呀,怎么让木马绕过检测就是我们需要做的

学习这类的题目需要多搜索,此外还要了解一句话木马原理,最重要的是,我们如果上传成功之后怎么查找我们需要的东西呢?

这个时候就需要shell工具了--(中国蚁剑、菜刀、冰蝎、哥斯拉等等,这些都可以在csdn或者GitHub上下载)

练习题目有以下

(1)攻防世界--webshell

(2)NSSCTF--[SWPUCTF 2021 新生赛]caidao

(3)BUUCTF--[极客大挑战 2019]Knife

(4)BUUCTF--[极客大挑战 2019]Upload

(5)BUUCTF--[ACTF2020 新生赛]Upload

当然这些是我们需要掌握的东西,但是并不是只有这些,路漫漫其修远兮,我们需要走的路还很长

发表评论

蜀ICP备2022010829号