前言
本小节主要为大家简单的介绍一些在编写POC时需要的基本技能。
网络通信原理
因为我们的POC是针对网络当中的一些应用程序当中是否存在漏洞进行验证的,那么我们就有必要深入了解基本的网络通信原理,例如:数据的请求与应答过程。同时我们也有必要了解一些基本的网络术语,例如:IP地址、域名(二级域名、三级域名等)、端口、TCP原理、HTTP协议、socket编程通信等等的内容,这一点不仅在您复现漏洞的时候有用,而且在你编写POC的时候也是非常有用的。
漏洞原理
因为我们编写的POC是主要用于验证漏洞是否存在的,而我们编写POC的思路也是来源于漏洞原理,那么我们就有必要深入理解漏洞的原理,这对我们之后编写POC来说是“如虎添翼”。
- SQL注入
- XSS
- CSRF
- SSRF
- 文件上传
- 文件下载
- XXE
- 文件包含
- 命令执行
- DOS
- 越权访问
- 弱口令
如果读者对于这些漏洞有不知或者有疑惑,可以自行查看本博主的文章!这里不再复述。
编码基础
虽然说我们的POC是一段代码,但是也涉及到基本的一些编程,那么我们需要掌握怎么样的编码能力呢?为了应对多方面的情况,以及结合具体的情况编写POC,我们需要具备以下基本的几项能力:
- HTML
这里不单是看 HTML 语言,而且要网页从服务器端传回来的响应状态码、网页的元素之类的。 - Javascript
想学 XSS, CSRF不会这个可不行。 - Python
我们后面写 PoC 会用到,所以这个要必会。这里只需要你会一点点 Python 的语法和一些常用的功能库就够了。 - SQL
你要是连 SQL 都不知道是什么,还在这给别人讲 SQL 注入,我就呵呵哒了。 - 正则表达式
自动化过程中经常需要自动匹配,不需要精通,但是要多多少少会一些。怎么测试你会了呢?我给你任意一个 wooyun 的漏洞页面,然后你能用脚本把里面的漏洞标题,作者,漏洞提交时间等等信息能够轻松用正则表达式提取出来,呐,这样就 OK 了。
Python库
下面简单的罗列一些在编写POC时,你可能会遇到的Python库,建议读者了解一些基本的库的使用,为后期的POC编写做准备。
用于发送HTTP请求的python库:
- urllib
- urllib2
- requests
- httplib
用于解析处理URL的库:
- urlparse
正则匹配:
- re
生成随机数
- random
MD5算法
- hashlib
base64
- base64
socket网络通信
- socket
IDE使用
因为本系列内容使用的是python来编写的,所以这里给大家推荐一款python开发工具————Pycharm。当然你也可以选择使用其他的编辑器,例如sublime,notepad++等。