什么是EXP、POC、CVE:
在某个漏洞出现的时候,会经常看到 exp啊,poc啊什么鬼的,
那么这些究竟是什么东西??
余弦大大说:
POC 即 Proof Of Concept,观点验证程序。
运行这个程序就可以得到预期的结果,验证了观点。
再简单点,就是测试的代码。。。
EXP 是 exploit(漏洞利用程序),就是利用代码
CVE 即 Common Vulnerabilities & Exposures 公共漏洞和暴露。
简单的说,就是我们熟悉的 漏洞信息库。
输入输出:
啰嗦一堆之后,本节终于要进入Python环节了
Python语法比较简单,这里就不做更多说明了。
首先来了解一下Python的输入输出,
输入这个没啥好讲的,就是直接在控制台上写代码,
输出常用的有两种方式,一种是 表达式语句,另外一种是 print()
数据类型:
Python3中有6个标准数据类型:
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Sets(集合)
- Dictionary(字典)
1. Number(数字)
数字类型包括整数、浮点数,
负数 、0 、正数都是整数,
例如:
2. String(字符串)
使用 '(单引号)
或者 "(双引号)
括起来的
例如:
"hello world"
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() 都是向列表末尾增加元素,我们来看看两者的区别
列表切片:
与字符串的索引一样,列表索引从0开始。
获取第一个元素:
list2[0]
获取索引值1到5的元素(包含1但是不包含5,前包后不包):
list2[1:5]
获取索引值6后面的全部元素(包含6,前包):
list2[6:]
获取索引值6前面的全部元素(不包含6,后不包):
list2[:6]
获取索引值倒数第2前面的全部元素(包含2):
list2[:-2]
列表删除:
删除列表中的元素可以使用 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
如果只有一个元素的时候,需要在元素后面添加逗号,否则括号会被当作运算符使用。
元祖一旦定义理论上不能进行增删改查,
如果非要修改,可以使用切片的方法,
例如:
tup1 = (1,2,3,4,5,6) tup1 = tup1[:2] + ("小明",) + tup1[2:]
添加的东西也一定要是元祖,
5. Sets(集合)
集合是一个无序的不重复元素序列。
可以使用 set()
或者 花括号{ }
创建集合,
例如:
a = set('abcdefggfedcba')
或者:
b = {1,2,3,4,5,5,4,3,2,1}
可以使用 add 和 remove 添加删除集合中的元素
但是集合不支持通过索引值来查找元素
6. Dictionary(字典)
当索引不好用的时候,我们可以使用字典。
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value),对用冒号(:
)分割,
每个对之间用逗号 ,
分割,
整个字典包括在花括号 {}
中
创建字典
方法1:
dict1 = { 'a':123,'b':456,'7':789 }
方法2:
dict2 = dict((('a',123),('b',456),('7',789)))
使用方法2的时候,注意键值对是使用逗号,
如果要访问某个元素,我们可以通过键名来查找对应的值,
例如:
dict1['a']
流程控制:
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:breakcount +=1
break:用于结束一个循环
当 count 为 5 的时候,结束此次循环。
例1:
count = 0 while count <= 10 : print("loop ", count)if count == 5:continuecount +=1
continue:只是终止本次循环,后面会接着继续循环。
while else 语句:
例:
count = 0 while count <= 5 : print("loop ", count)count +=1 else:print("循环结束啦!!!");
else 作用是指,当 while 循环正常执行完,中间没有被 break 中止的话,就会执行else后面的语句,
如果执行过程中被 break ,就不会执行else的语句。