前言:

Python POC编写 的第一篇 ,

没有开始,就没有结束,

本系列使用 Python3。

目录:

什么是EXP、POC、CVE:

在某个漏洞出现的时候,会经常看到 exp啊,poc啊什么鬼的,

那么这些究竟是什么东西??

余弦大大说:

POC 即 Proof Of Concept,观点验证程序。

运行这个程序就可以得到预期的结果,验证了观点。

再简单点,就是测试的代码。。。

EXP 是 exploit(漏洞利用程序),就是利用代码

CVE 即 Common Vulnerabilities & Exposures 公共漏洞和暴露。

简单的说,就是我们熟悉的 漏洞信息库。

输入输出:

啰嗦一堆之后,本节终于要进入Python环节了

Python语法比较简单,这里就不做更多说明了。

首先来了解一下Python的输入输出,

输入这个没啥好讲的,就是直接在控制台上写代码,

输出常用的有两种方式,一种是 表达式语句,另外一种是 print()

如何使用python写poc要加header python poc_字符串

数据类型:

Python3中有6个标准数据类型:

Number(数字)

String(字符串)

List(列表)

Tuple(元组)

Sets(集合)

Dictionary(字典)

1. Number(数字)

数字类型包括整数、浮点数,

负数 、0 、正数都是整数,

例如:

如何使用python写poc要加header python poc_python输入什么就输出什么_02

2. String(字符串)

使用 '(单引号) 或者 "(双引号) 括起来的

例如:

"hello world"

如何使用python写poc要加header python poc_python输入什么就输出什么_03

3. List(列表)

列表是使用方括号括 [] 起来的,

例如:

list2 = [1,2,3,"小明",10.1,[1,2,3]]

一个列表里面可以存在多种类型,比如整型、浮点型、字符串,还可以包含另外一个列表

他们之间使用逗号分隔。

另外,有两个比较常用的函数:

append() 函数是将参数作为一个元素增加到列表的末尾。
extend() 方法则是将参数作为一个列表去扩展列表的末尾。
例如,使用 append() 函数向列表list2末尾增加元素
list2.append(1) # 向列表list2末尾增加一个整数
list2.append("hello") # 向列表list2末尾增加一个字符串
list2.append([1,2,3]) # 向列表list2末尾增加一个列表
例如,使用 extend() 函数向列表list2末尾增加元素
list2.extend([1,2,3])

append() 和 extend() 都是向列表末尾增加元素,我们来看看两者的区别

如何使用python写poc要加header python poc_字符串_04

列表切片:

与字符串的索引一样,列表索引从0开始。

获取第一个元素:

list2[0]

获取索引值1到5的元素(包含1但是不包含5,前包后不包):

list2[1:5]

获取索引值6后面的全部元素(包含6,前包):

list2[6:]

获取索引值6前面的全部元素(不包含6,后不包):

list2[:6]

获取索引值倒数第2前面的全部元素(包含2):

list2[:-2]

如何使用python写poc要加header python poc_元组_05

列表删除:

删除列表中的元素可以使用 del 函数 或者 指定为空 ,

例如: 删除第一个元素

del list2[0] # 删除第一个元素

删除索引值 2到5 的元素:

list2[2:5] = [] # 指定为空

删除整个列表:

del list2

或者:

list2 = []

如果我们想要改变某个元素的值,可以这样

list2[0] = 233 # 将第一个元素的值改变为 整数233,如果使用单引号或者双引号就是字符串

4. Tuple(元组)

元组使用 小括号() 来定义,或者使用逗号

例:

tup1 = (1,2,3)

或者:

tup1 = 1,2,3

如果只有一个元素的时候,需要在元素后面添加逗号,否则括号会被当作运算符使用。

如何使用python写poc要加header python poc_元组_06

元祖一旦定义理论上不能进行增删改查,

如果非要修改,可以使用切片的方法,

例如:

tup1 = (1,2,3,4,5,6)

tup1 = tup1[:2] + ("小明",) + tup1[2:]

添加的东西也一定要是元祖,

如何使用python写poc要加header python poc_Python_07

5. Sets(集合)

集合是一个无序的不重复元素序列。

可以使用 set() 或者 花括号{ } 创建集合,

例如:

a = set('abcdefggfedcba')

或者:

b = {1,2,3,4,5,5,4,3,2,1}

如何使用python写poc要加header python poc_字符串_08

可以使用 add 和 remove 添加删除集合中的元素

但是集合不支持通过索引值来查找元素

如何使用python写poc要加header python poc_字符串_09

6. Dictionary(字典)

当索引不好用的时候,我们可以使用字典。

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value),对用冒号(:)分割,

每个对之间用逗号 , 分割,

整个字典包括在花括号 {} 中

创建字典

方法1:

dict1 = { 'a':123,'b':456,'7':789 }

方法2:

dict2 = dict((('a',123),('b',456),('7',789)))

使用方法2的时候,注意键值对是使用逗号,

如果要访问某个元素,我们可以通过键名来查找对应的值,

例如:

dict1['a']

如何使用python写poc要加header python poc_python输入什么就输出什么_10

流程控制:

if语句:

单向分支:

if 1 < 2:

print('窝喜欢')

双向分支:

if 1 < 2:

print('窝喜欢你')

else:

print('窝还是喜欢你')

多项分支:

if 1 < 2:

print('窝喜欢')

elif 2 < 1:

print('窝还是喜欢你')

else:

print('窝真喜欢你')

巢状分支:

就是条件嵌套。

if 1 < 2:

print('窝喜欢')

if 2 < 1:

print('窝还是喜欢你')

else:

print('窝真喜欢你')

while语句:

语法:

while 条件:

循环体

例1:

count = 0
while count <= 10 :
print("loop ", count)
if count == 5:
break
count +=1

break:用于结束一个循环

当 count 为 5 的时候,结束此次循环。

例1:

count = 0
while count <= 10 :
print("loop ", count)
if count == 5:
continue
count +=1

continue:只是终止本次循环,后面会接着继续循环。

while else 语句:

例:

count = 0
while count <= 5 :
print("loop ", count)
count +=1
else:
print("循环结束啦!!!");

else 作用是指,当 while 循环正常执行完,中间没有被 break 中止的话,就会执行else后面的语句,

如果执行过程中被 break ,就不会执行else的语句。

总结

第一篇 完。