MySql教程

Python MySQL注入

本文主要是介绍Python MySQL注入,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一
利用SQL “#” 的注释功能更改原SQL语句来实现

存在SQL注入问题的代码:

#! /usr/bin/python3
# -*- encoding:utf8 -*-

import pymysql
import hashlib

dbserver = input('输入服务器地址:')
username = input('请输入用户帐号:')
passwd = input('请输入帐号密码:')
dbname = input('输入数据库名:')
# 使用md5进行明文密码加密
md5 = hashlib.md5()
md5.update(passwd.encode('utf8'))
passwd = md5.hexdigest()

sql = 'select * from user where name = "%s" and passwd = "%s";' % (username,passwd)
db = pymysql.connect(
    host=dbserver,
    user=username,
    passwd=passwd,
    database=dbname
)
cursor = db.cursor()
cursor.execute(sql)

result = cursor.fetchall()

if not result:
    print('用户名密码不匹配')
else:
    print('欢迎{}回来,你的信息是:\n{}'.format(username, result))                                                                                                                              
                                                                                                                           

SQL注入问题修正

#! /usr/bin/python3
# -*- encoding:utf8 -*-


import pymysql
import hashlib

dbserver = input('输入服务器地址:')
username = input('请输入用户帐号:')
password = input('请输入帐号密码:')
dbname = input('输入数据库名:')
# 使用md5进行明文密码加密
md5 = hashlib.md5()
md5.update(password.encode('utf8'))
password = md5.hexdigest()

sql = 'select * from user where name = %s and passwd = %s;'
print(sql.format(username, password))

db = pymysql.connect(
    host=dbserver,
    user=username',
    passwd=password,
    database=dbname
)
cursor = db.cursor()
print(password)
cursor.execute(sql, (username, password))

result = cursor.fetchall()

if not result:
    print('用户名密码不匹配')
else:
    print('欢迎{}回来,你的信息是:\n{}'.format(username, result))
这篇关于Python MySQL注入的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!