sql 注入攻击是通过将恶意的 sql 查询或添加语句插入到应用的输入参数中,再在后台 sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一
利用sql “#” 的注释功能更改原SQL语句来实现
存在sql注入问题的代码:
#! /usr/bin/python3# -*- enCoding:utf8 -*-import pyMysqLimport hashlibdbserver = 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 pyMysqLimport hashlibdbserver = 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注入全部内容,希望文章能够帮你解决Python MySQL注入所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)