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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值