python3 pymysql模块sql注入

#!/usr/bin/python # -*- coding:utf-8 -*- import pymysql user = input('请输入用户名:') pwd = input('请输入密码:') # 获取数据 conn = pymysql.Connect( host='127.0.0.1', port=3306, user='root', password="666", database="exercise", charset='utf8') cursor = conn.cursor() v = cursor.execute('select * from userinfo where username="%s" and password="%s" ' % (user, pwd)) # (-- 杠杠空格表示结束),sql注入第一种状况,只要输入正确的用户名,就能够免密码的认证 # user = lily" -- # pwd= sdfsdf # 'select * from userinfo where username="lily" -- " and password="sdfsdf"' # (-- 杠杠空格表示结束) (1=1为True) sql注入第二种状况 where后面只要有True,结果都为True # user = asdfasdf" or 1=1 -- # pwd= asdfasdf # 'select * from userinfo where username="asdfasdf" or 1=1 -- " and password="asdfasdf"' result = cursor.fetchone() print(result) # (1, 'lily', '666') cursor.close() conn.close()
#!/usr/bin/python # -*- coding:utf-8 -*- import pymysql user = input('请输入用户名:') pwd = input('请输入密码:') # 获取数据 conn = pymysql.Connect( host='127.0.0.1', port=3306, user='root', password="666", database="exercise", charset='utf8') cursor = conn.cursor() # v受影响行数 v = cursor.execute('select * from userinfo where username=%s and password=%s', [user, pwd]) # 这样写,能够防止sql注入 result = cursor.fetchone() print(result) # (1, 'lily', '666') cursor.close() conn.close()
#!/usr/bin/python # -*- coding:utf-8 -*- import pymysql # 获取数据 conn = pymysql.Connect( host='127.0.0.1', port=3306, user='root', password="666", database="exercise", charset='utf8') cursor = conn.cursor() cursor.execute('insert into class(caption) values(%s)', ['新班级']) # 这样写,能够防止sql注入 conn.commit() new_class_id = cursor.lastrowid # 获取新增数据自增ID  cursor.execute('insert into student(sname, gender, class_id) values(%s, %s, %s)', ['lily', '', new_class_id]) conn.commit() cursor.close() conn.close()
相关文章
相关标签/搜索