(9)SQL的注入(致命的漏洞)
用户登陆网站的时候进行账户验证输入特殊的格式和字符会触发一个漏洞,不需要密码直接登录成功
import pymysql
username = input('请输入账号: ')
password = input('请输入密码: ')
conn = pymysql.connect(host='localhost',user='root',password='',database='company',port=3306,charset='utf8',cursorclass=pymysql.cursors.DictCursor)
cursor = conn.cursor()
cursor.execute("select * from userinfo where name='%s'and password='%s'"%(username,password))
res = cursor.fetchall()
if res:
print(res)
else:
print('账号密码错误')
用户在输入账号的使用使用这种格式:
1、用户名+空格+ ' + 空格 + #, #知道用户名的情况下以这种格式进行登陆验证,密码随意填写,就会触发bug,用户的验证通过,并不需要密码
2、任意字母 + 空格 + ' + or + 空格 + 1=1 + 空格 + # #这种格式不需要账户和密码,能够直接通过数据库验证
PS:注入的原理就是在用户名的后面加 #,这样值在传入指令的时候后面跟了一个 #,#后面所有的代码都被注释掉,这样值模仿判定代码就会生效
解决注入漏洞的办法
import pymysql
username = input('请输入账号: ')
password = input('请输入密码: ')
conn = pymysql.connect(host='localhost',user='root',password='',database='company',port=3306,charset='utf8',cursorclass=pymysql.cursors.DictCursor)
cursor = conn.cursor()
'''避免注入,将指令放入变量中'''
sql = "select * from userinfo where name=%sand password=%s"
'''将执行sql语句的时候将值以元组的形式传入,python就会自动转义,去掉#号'''
cursor.execute(sql,(username,password))
res = cursor.fetchall()
if res:
print(res)
else:
print('账号密码错误')
不单单是登陆验证,在插入数据的时候也不要用这种格式
"select * from userinfo where name='%s'and password='%s'"%(username,password)
登陆和插入的时候都要以这种格式(安全格式)
sql = "select * from userinfo where name=%sand password=%s" cursor.execute(sql,(username,password))
(9)SQL的注入(致命的漏洞)的更多相关文章
- 【新手篇】搭建DCN漏洞靶机及简单的SQL手工注入
很多新手小白入门后发现想要学好“网安”技术,除了掌握基础理论知识,更需要经常模拟不同的漏洞环境,但是如果使用外网服务器练习,会存在一定风险,因此能够搭建一个本地的模拟环境去测试漏洞将是一个不错的方案. ...
- 网络安全学习阶段性总结:SQL注入|SSRF攻击|OS命令注入|身份验证漏洞|事物逻辑漏洞|目录遍历漏洞
目录 SQL注入 什么是SQL注入? 掌握SQL注入之前需要了解的知识点 SQL注入情况流程分析 有完整的回显报错(最简单的情况)--检索数据: 在HTTP报文中利用注释---危险操作 检索隐藏数据: ...
- 小白日记40:kali渗透测试之Web渗透-SQL手工注入(二)-读取文件、写入文件、反弹shell
SQL手工注入 1.读取文件[load_file函数] ' union SELECT null,load_file('/etc/passwd')--+ burpsuite 2.写入文件 ' unio ...
- 小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法
SQL手工注入(一) SQL注入:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.[SQL注入原理] ##服务端程序将用户输入参数作为查询 ...
- PHP安全、Sql防注入安全汇总
利用Mysqli和PDO 产生原因 主要就是一些数据没有经过严格的验证,然后直接拼接 SQL 去查询.导致漏洞产生,比如: $id = $_GET['id']; $sql = "SELECT ...
- Kali学习笔记42:SQL手工注入(4)
前三篇文章都是在讲发现SQL注入漏洞 如何查询得到所有的信息 那么另一条思路还未尝试过:能否修改数据? 例如这样: '; update users set user='yiqing' where us ...
- python辅助sql手工注入猜解数据库案例分析
发现存在sql注入漏洞 简单一点可以直接用sqlmap工具暴库 但是如果想深入理解sql注入的原理,可以尝试手工注入,配合python脚本实现手工猜解数据库 首先hachbar开启 获取cms登录后的 ...
- php SQL 防注入的一些经验
产生原因 一方面自己没这方面的意识,有些数据没有经过严格的验证,然后直接拼接 SQL 去查询.导致漏洞产生,比如: $id = $_GET['id']; $sql = "SELECT nam ...
- sql 防注入 维基百科
http://zh.wikipedia.org/wiki/SQL%E8%B3%87%E6%96%99%E9%9A%B1%E7%A2%BC%E6%94%BB%E6%93%8A SQL攻击(SQL inj ...
- 一次简单的SQL手工注入
1. 首先要了解SQL注入的原理: SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 具体来说,它是利 ...
随机推荐
- 【HttpClient】一个http_post请求例子
package httpclient.httpclient; import java.io.IOException; import org.apache.http.Header; import org ...
- Win10系列:VC++文件选取
在C++/CX的Windows::Storage::Pickers命名空间中定义了一个FileOpenPicker类,使用此类可以新建一个文件打开选取器,并可以通过这个类里面包含的属性和函数选取一个或 ...
- Win10系列:JavaScript小球运动示例
通过前面内容的学习,相信读者已经对开发基于JavaScript的Windows应用商店应用有了一定的了解,本小节通过一个小球运动的示例来介绍如何新建一个JavaScript的Windows应用商店项目 ...
- learning at command AT+CEREG
AT command AT+CEREG [Purpose] Learning how to query the network registration status [Eeviro ...
- UVa 11636 - Hello World! 二分,水题 难度: 0
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- mybatis 无法自动补全,没有获得dtd文件
由于网络原因,eclipse无法下载到http://mybatis.org/dtd/mybatis-3-mapper.dtd,导致eclipse的编辑器无法自动补全标签. 解决办法:将dtd文件下载到 ...
- 《Python》网络编程之验证客户端连接的合法性、socketserver模块
一.socket的更多方法介绍 # 服务端套接字函数 s.bind() # 绑定(主机,端口号)到套接字 s.listen() # 开始TCP监听 s.accept() # 被动接受TCP客户的连接, ...
- swiftlint 你所要知道的所有!!
swiftin Should the opening brace of a function or control flow statement be on a new line or not ?:) ...
- C++的string类型和继承C语言风格的字符串的区别与注意事项
1.尽可能地在C++程序中使用string,不要使用继承而来的C语言风格的字符串,会出现许多安全问题. 2.C语言的字符串风格,是以空字符结束的,在C++的头文件cstring中定义了C语言风格的字符 ...
- Cracking The Coding Interview 1.1
//原文: // // Implement an algorithm to determine if a string has all unique characters. What if you c ...