Python安全编程

Python安全编程可以做什么?

目录扫描

Web+多线程{requests + threading + Queue: [后台 | 敏感文件(svn|upload)| 敏感目录(phpmyadmin)]}

信息收集

Web + 数据库{中间件(Tomcat | Jboss)+ C断 Web 信息 + 搜集特定程序}

信息匹配&SQL注入

Web + 正则{抓取信息(用户名 + 邮箱)+ SQL注入}

反弹shell

网络

是不是已经心动了呢?

一、Python 正则表达式

1. 正则表达式

正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的表达式。关于字符串中转义的问题,强烈推荐使用原生字符串类型来书写正则表达式,即只需要在表达式前面加 r 即可。

2. re库详解

2.1 正则表达式常用的函数

函数 说明
re.match() 从字符串的起始位置开始匹配,匹配成功返回一个匹配的对象,否则返回None
re.search() 扫描整个字符串并返回第一个成功匹配的
re.findall() 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表;如果没有找到则返回一个空列表
re.split() 将字符串按正则表达式匹配结果进行分割,返回列表类型
re.finditer() 在字符串中找到正则表达式所匹配的所有字串,并将所有字串的结果作为一个迭代器返回
re.sub() 将字符串中所有匹配的正则表达式的地方替换成新的字符串
语法说明如下:
语法:re.match(pattern, string, flags=0)
pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等;flags=0表示不进行特殊指定
import re
matchStr = 'Cats are smarter than dogs'
matchObj = re.match(r'(.*) are (.*?) .*', matchStr, re.M|re.I)
if matchObj:
    print("matchObj.group(): ", matchObj.group())
    print("matchObj.group(1): ", matchObj.group(1))
    print("matchObj.group(2): ", matchObj.group(2))
    print("matchObj.group3(): ", matchObj.groups())
else:
    print("No match!")
    
matchObj.group():  Cats are smarter than dogs
matchObj.group(1):  Cats
matchObj.group(2):  smarter
matchObj.groups():  ('Cats', 'smarter')

关于正则表达式中的flag位:

标志位 说明
re.I 使匹配对大小写不敏感
re.L 使本地化识别匹配
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
re.U 根据 Unicode 字符集解析字符,这个标识影响 w, W, , B.
flag=0 表示不进行特殊指定

2.2 正则表达式模式

模式 描述
^ 匹配字符串的开头
$ 匹配字符串的末尾
. 匹配除了换行符意外的任意字符
[...] 表示一组字符,单独列出:[amk] 匹配 'a','m'或'k'
[^...] 不在[]内的字符:[^abc]匹配除了a, b, c之外的字符
re* 匹配0个或多个的表达式
re+ 匹配1个或多个的表达式
re? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪模式
........... 还有很多暂时用不上的,后续补充

2.3. 贪婪模式和非贪婪模式

python 中默认的是贪婪模式;
贪婪模式:尝试匹配尽可能多的字符;
非贪婪模式:尝试匹配尽可能少的字符

start_at = 'good'
match_start = re.match(r'^g.*', start_at)
match_start.group()
'good'
match_start = re.match(r'^g.*?', start_at)
match_start.group()
'g'

二、Python Web 编程

三、Python 多线程编程

四、Python 网络编程

五、Python 数据库编程

原文地址:https://www.cnblogs.com/crisimple/p/12905713.html