什么是 PoC

PoC(全称: Proof of Concept), 中文译作概念验证。在安全界,你可以理解成为漏洞验证程序,和一些应用程序相比,PoC 是一段不完整的程序,仅仅是为了证明提出者的观点的一段代码

什么是 Exp

Exp(全称: Exploit),中文叫漏洞利用程序。名字上说的已经很清楚了,简单讲,就是一段可以发挥漏洞价值的程序,这话感觉和没说一样。想象一下这样的场景,目标存在一个 SQL 注入漏洞,然后被你知道了,然后你编写了一个程序,通过这个 SQL 注入漏洞,拿到了目标的权限,那么这个程序就是所谓的 Exp 了.

POC与EXP的区别

PoC 和 Exp 是两个东西,PoC 就是用来证明漏洞存在的,而 Exp 是用来利用这个漏洞的,在很多情况下,我们知道了漏洞存在,却不知道具体怎么利用,编写一个 PoC 非常简单,而编写一个 Exp 是相当有挑战性的。

PoC 编写流程

根据漏洞详情,寻找受影响版本程序

如果是一些 CMS, 可以去 对应的官网下载历史版本程序,有些漏洞作者不会提具体版本号,那你就要根据漏洞作者提交的时间来判断了。当然除了官方网站之外,还可以去 github 上寻找源码,这些个官网都喜欢把历史版本的程序删除掉,善用 github 上的 tag, branch, release 功能,上面有你要的所有版本

搭建对应漏洞靶场

这里其实没什么好说的,下载了人家的源码之后,在你的虚拟机里面配置好环境就行了,还能顺便学一下运维的一些皮毛知识。

手动复现漏洞

根据漏洞详情,手动将整个流程走一遍,熟悉下复现条件,比如使用 GET 还是 POST 请求,需不需要登陆,返回的页面会是什么样子的,我提交不同的参数,会不会出现其它结果,如果漏洞不存在的话,会出现什么样的结果

写代码

手动复现了一次漏洞之后,分析漏洞证明步骤,根据自己的实际测试情况一步一步写代码,用我的话来说,写代码,其实就是用程序模拟人工操作的每一个步骤,如果你上一步认真做了,这一步只是经验问题

编写POC,首推语言当然是Python了,原因很简单——好用,Python提供的强大类库可以让我们将主要精力都放在具体漏洞研究上,而不用去纠结诸如如何去实现HTML解析、HTTP发送等辅助功能。常用到的Python库如下:

urllib2: 发送HTTP/HTTPS请求

requests:更“高级”的urllib2库

re:正则表达式

random:生成随机数

base64:base64编码

hashlib:常用来计算md5值

time:用来统计访问时间延迟

……

当然语言只是工具载体,并不局限于Python。原则上你想用什么语言都可以,建议首选那种外部条件依赖少、简单好用而且自己也比较熟悉的语言

测试 PoC

其它测试和编码基本都是在同时进行的,为什么要单独提出来讲呢,我们在写 PoC 的时候,除了在存在漏洞的靶机上测试我们的代码,还要在不存在漏洞的站点测试,一般为说,一个优秀的 PoC 在后期测试的时候要求对 10000 个目标测试,误报不能超过 10 个

国内 PoC 框架简介

POC框架可以对大量POC进行管理与调度,提供了统一的编程规范与接口,是编写POC很好的帮手。我们只需要按照框架自定义的格式写好POC,然后放在框架中运行即可。目前国内有很多非常优秀框架,这里就介绍其中的几款

1.Pocsuite

Pocsuite框架现为知道创宇Seebug平台通用的漏洞验证框架,使用Python编写POC。可以提交POC换kb,kb可以用来兑换现金,挣点零花钱还是相当不错的。老司机们可能听过Sebug,那是Seebug的前身,2016年Sebug收购了另一个优秀框架Beebeeto后,更名为Seebug

github地址:https://github.com/knownsec/Pocsuite

2.Bugscan

Bugscan是四叶草的官方框架,使用Python编写POC。提交POC插件获取rank 奖励,可兑换实物奖励,奖品还是蛮丰富的

BugScan SDK:http://doc.bugscan.net/

Tangscan

Tangscan(唐朝扫描器)是wooyun社区的官方框架,使用Python编写POC。可以提交POC换汤圆,参与现金分红。Tangscan社区已经关闭,不知道还会不会开,里面的汤圆还没取出来呢。

github地址:https://github.com/WooYun/TangScan

python编写poc_POC编写基础知识相关推荐

  1. VII python(1)基础知识

    VII Python(1)基础知识 1989年诞生(同LinuxOS),google推崇,06年后才开始在中国流行,08年运维开始使用python www.python.org(主流OS默认配的pyt ...

  2. 学python需要什么基础知识-没学过Python先要学习哪些基础知识?

    零基础学Python应该学习哪些入门知识 关于零基础怎么样能快速学好Python的问题,百度提问和解答的都很多,你可以百度下看看.我觉得从个人自学的角度出发,应从以下几个方面来理解: 1 为什么选择学 ...

  3. 数字图像处理与Python实现笔记之基础知识

    数字图像处理与Python实现笔记之基础知识 摘要 绪论 1 数字图像处理基础知识 1.1 数字图像简介 1.1.1 数字图像处理的目的 1.1.2 数字图像处理的应用 1.1.3 数字图像处理的特点 ...

  4. python 图像分析自然纹理方向与粗细代码_数字图像处理与Python实现笔记之基础知识...

    数字图像处理与Python实现笔记之基础知识 摘要 绪论 1 数字图像处理基础知识 1.1 数字图像简介 1.1.1 数字图像处理的目的 1.1.2 数字图像处理的应用 1.1.3 数字图像处理的特点 ...

  5. python自学需要哪些基础知识-零基础学Python应该学习哪些入门知识及学习步骤安排...

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...

  6. python语言入门w-python基础知识(一)

    最近花时间整理了一下以前学过的python基础知识,语言最多的是使用. 1.1 开发模式 交互模式:简单的调试或者测试 开发流程 创建以.py结尾的python文件 在python文件中输入打印&qu ...

  7. python基础一入门必备知识-Python快速入门指南基础知识详细说明

    随着人工智能大火,我们身边几乎处处充满着AL的气息,就连停车,都是机器人值班了. 可是很多人都不知道人工智能是由什么开发的,各种相关联的框架都是以Python作为主要语言开发出来的. Python本身 ...

  8. python数学知识点_python基础知识整理

    序言:本文简单介绍python基础知识的一些重要知识点,用于总结复习,每个知识点的具体用法会在后面的博客中一一补充 2. 程序: 一组计算机能识别和执行的指令,是实现某种需求的软件. 3. 操作系统: ...

  9. python基础一入门必备知识-Python数据分析入门必备基础知识

    今天,老师要带大家解数据分析的定义.核心思路.应用领域以及开发流程,向大家全方位展示数据分析入门必备基础知识,全都是干货哦!虽然看完本文,不能让大家立马变身为一名数据分析师,但是能让大家对数据分析有一 ...

  10. [Python图像处理] 一.图像处理基础知识及OpenCV入门函数

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

最新文章

  1. 转载 - 10个基于jQuery实现的漂亮网站赏析
  2. WPF多表头技术探索总结
  3. OpenCV与FLANN的功能匹配
  4. 【cJSon】cJSON学习笔记(一)
  5. php取掉字符串第一位支付,php怎样去掉字符串中的第一个字符
  6. 使用PLSQL 远程连接oracle数据库
  7. eggjs 项目实践
  8. 成为JavaGC专家Part II — 如何监控Java垃圾回收机制
  9. 小波变换matlab代码,matlab小波变换代码
  10. Python3自然语言(NLTK)——语言大数据
  11. WPF学习第十一集-深入浅出话模板
  12. VSCode正则表达式搜索
  13. selenium常用模块(传送门)
  14. ddd+kgdb调试内核
  15. HM下载、配置、运行
  16. vs2019 installer Projects 【打包程序 下载地址】
  17. 安卓OTA升级系统解析上
  18. 联想MIIX720二合一笔记本键盘维修(带键盘灯款)
  19. Django 2.2:模型M.定义模型
  20. KP1210代替品 喆光WISELITE MPC-851 晶体管输出350V 光电晶体管

热门文章

  1. 独家下载!《Java工程师成神之路(基础篇)》
  2. 阿里云服务器使用-1-可以通过浏览器访问阿里云提供的ip地址
  3. 魔百盒CM201-2-YS代工-刷机固件及教程
  4. f(!gotop.length) return false;
  5. Kotlin协成的简单理解
  6. 软件测试周刊(第37期):不能随便生气
  7. 算法时间复杂度符号分析(O、o、Ω、ω、Θ)
  8. 算法时间复杂度符号分析——O、o、Ω、ω、Θ
  9. 【反思】写在腾讯电话面试之后
  10. win10系统下office 2010/2016打开excel文件很慢的问题解决