首页 > 数据库技术 > 详细

mysql 注入问题

时间:2019-07-18 23:38:56      阅读:79      评论:0      收藏:0      [点我收藏+]

1、实质

MySql语句是用户自行拼接的字符串

2、例子

import pymysql
# 获取用户输入信息
username = input("请输入用户名:")
pwd = input("请输入密码:")
# 连接数据库
conn = pymysql.connect(
    host=localhost,
    port=3306,
    user=root,
    password=@WSX3edc,
    database=userinfo,
    charset=utf8
)
# 获取光标
cursor = conn.cursor()
sql = "select * from info where name=‘%s‘ and password=‘%s‘;" % (username, pwd)
# 执行MySql语句
print(sql)
ret = cursor.execute(sql)
if ret:
    print("登录成功!")
else:
    print("登录失败!")
# 关闭光标
cursor.close()
# 关闭连接
conn.close()

注入语句

输入语句
losser or 1=1 #
输出sql语句
select * from info where name=losser or 1=1 #‘ and password=‘‘;
注意:我这里用pycharm连接MySql,在pycharm中sql语句的注释是:#
如果不通过pycharm连接数据库,而是直接通过pymysql连接 注释应该是: --
select * from info where name=losser or 1=1 
1=1为永真语句
#‘ and password=‘‘;

3、解决注入问题->通过pymysql模块进行字符拼接

import pymysql
# 获取用户输入信息
username = input("请输入用户名:")
password = input("请输入密码:")
# 连接数据库
conn = pymysql.connect(
    host=localhost,
    port=3306,
    user=root,
    password=@WSX3edc,
    database=userinfo,
    charset=utf8
)
# 获取光标
cursor = conn.cursor()
# sql语句
sql = select * from info where name=%s and password=%s;
# 执行sql语句,通过pymysql进行sql语句拼接
ret = cursor.execute(sql, [username, password])
if ret:
    print("登录成功!")
else:
    print("登录失败!")
# 关闭光标
cursor.close()
# 关闭连接
conn.close()

 

mysql 注入问题

原文:https://www.cnblogs.com/wt7018/p/11210514.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!