Sqli-labs第一关到第四关

目录

一,了解PHP源代码    

二,破解第一关

 2.1在了解完源码之后,我们重点看一下

2.2破解这道题表中有几列 

2.3查看表中哪一列有回显

2.4查询库,表,列信息

三,总结 


前提:

        之所以把1234关一起破解,是因为它们属于同一类型,下面我们来看一看他们的不同点与相同点    

一,了解PHP源代码    

       1.1  以第一关为例,我们先找到www文件(及网站根目录),找到sqli靶场的第一关,在index.php文中,添加两行代码(建议每一关都加)

        添加 echo $sql; echo "<br>";, 这两行的意思是将我们输入的sql语句显示到页面上,然后换行,这有助于我们更好理解注入的原理;

        1.2进入第一关

注意:HackBar浏览器插件,自行百度查询

        1.3我们发现需要我们输入id信息,输入?id=1,如图:

        1.4 发现页面上输出了我们的登录名和密码,这时候我们不要着急往下做,我们先看一下后端源码,了解一下SQL注入的逻辑,我们挑主要的看一下

        1.5 分析PHP源代码

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

        这句SQL语句的意思是从数据库中查找数据,也是sql注入的关键位置。简单来说,这行代码的意思就是,我们要从 user这个表里面,查询所有id等于我们输入id的内容,然后只取一条反馈到页面上。limit0,1指的是users表从第零行开始输出1个信息(及表中的第一个信息);

echo $sql;

        这句的意思是将刚写入的SQL语句输出到屏幕上来,方便我们注入时理解

$result=mysql_query($sql);

        mysql_query函数,它的作用是将我们刚写的sql语句执行,但它的结果只会返回ture和false,无法返回我们通过sql语句所获得的数据信息。

$row = mysql_fetch_array($result);

        mysql_fetch_array的函数就解决了我们刚刚的问题,它的作用是将我们执行的sql语句所获得的数据保存在一个数组里

if($row)
	{
  	echo "<font size='5' color= '#99FF00'>";``
  	echo 'Your Login name:'. $row['username'];
  	echo "<br>";
  	echo 'Your Password:' .$row['password'];
  	echo "</font>";
  	}
	else 
	{
	echo '<font color= "#FFFF00">';
	print_r(mysql_error());
	echo "</font>";  
	}

        这些代码就是输出我们的username和password,还要注意的就prin_f(mysql_error())这个函数,他的作用是返回一个带有错误描述的字符串。如果没有错误发生则返回 “”,这是我们之后进行报错注入的关键

二,破解第一关

 2.1在了解完源码之后,我们重点看一下

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

        其中的$id就是我们可操作的内容,也就是说我们需要利用这行代码来提取出数据库的所有信息,这时我们回到第一关,输入?id=1’,看看结果;

发现报错,我们分析一下,在后端执行的sql语句为

SELECT * FROM users WHERE id='1'' LIMIT 0,1

        可以看到它只能执行到id='1’后面的 ’ LIME 0,1有语法错误,所以我们在第二个 ’ 后用--+或--%27(意思是空格) 或者%23(意思是#)将后面注释掉,再执行看一下。如图:

 

        

2.2破解这道题表中有几列 

        可以看到没有报错,并且我们看到这道题是有回显的(即会把信息返回到页面上),这里我们用到order by函数:

        order by函数用来判断该数据库当前使用的表有几列,从大往小,直到不会报错即为最大,我测试完为3列

2.3查看表中哪一列有回显

接下来来判断哪一列有回显位置,用到了

1' and 1=2 union select 1,2,3 --+

        这里涉及到了一个知识点,id 后面跟着的为-1。这里,就跟union 这个语句有关了。这是sql注入里面很常用的东西,用法是将前后两个sql语句结合起来,但是,如果第一条成立,那么在显示位置有限的情况下,后面的查询虽然也正常执行了,但是却不会在网页上反馈,如果我们希望在屏幕上直接看到返回结果,就需要让前方的语句错误。

2.4查询库,表,列信息

        接下来我们就知道了2,3的地方是有回显的,可以进行sql注入,这里给大家介绍一些简单的查询语句:

查库:select schema_name from information_schema.schemata;

查表:select table_name from information_schema.tables where table_schema='security';

查列:select column_name from information_schema.columns where table_name='users';

查字段:select username,password from security.users;

注意:sqli靶场的库默认security表默认users

这些语句可以配合limit使用,但是更推荐用group_concat函数

对比group_concat:         

group_concat函数就是将所有值返回。

concat_ws('~',username,password)

 这个是将字段名连起来输出,我们再配合group_concat函数

group_concat(concat_ws('~',username,password)) from security.users --+

 对比group_concat()

三,总结 

        1~4关的过程只有对id的闭合方式不同,比如第一关的闭合方式是 ‘id’,我们用‘进行闭合,此外闭合方式还有 id “id” (id) (’id‘)((id)) ((‘id’)) ((“id”))等 ,我们可以输入每一种方式的右半边根据它的报错信息来判断它的闭合方式

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

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

相关文章

MySQL基础_1.MySQL概述

文章目录 一、关系型数据库和非关系型数据库1.1 关系型&#xff08;RDBMS&#xff09;1.2 非关系型&#xff08;非RDBMS&#xff09; 二、常用的基础语句2.1 查看表的创建信息2.2 编码问题 一、关系型数据库和非关系型数据库 1.1 关系型&#xff08;RDBMS&#xff09; 是最古…

都上3D数字孪生了,2D的WEB组态和大屏可视化未来的发展在哪里?趋势是基于页面嵌套、蓝图连线等新技术,与功能业务应用融合

首先回顾下组态工具的发展史&#xff1a; 回顾发展史&#xff0c;WEB组态终于可以搭建业务系统了&#xff01;&#xff08;页面嵌套 节点编辑 WEB组态 上位机 大屏可视化 无代码 0代码 iframe nodered 蓝图&#xff09;-CSDN博客文章浏览阅读624次&#xff0c;点赞12次&#x…

ThreeJS:纹理的颜色空间

色彩空间Color Space 在ThreeJS中&#xff0c;纹理的colorSpace属性用于定义文里的颜色空间。 颜色空间是一个用于描述颜色的数学模型&#xff0c;在现实生活中&#xff0c;人眼可以观察到无数种颜色&#xff0c;而颜色空间就是用来描述这些颜色的一个方法&#xff0c;不同的颜…

C语言-自定义类型:结构体,枚举,联合

目录 一、结构体1.1 结构体变量的定义和初始化1.2 结构体内存对齐1.3 修改默认对齐数1.4 结构体传参 二、位段2.1 什么是位段2.2 位段的内存分配2.3 位段的跨平台问题2.4 位段的应用 三、枚举3.1 枚举类型的定义3.2 枚举的优点 四、联合&#xff08;共用体&#xff09;4.1 联合…

c#数据库: 9.删除和添加新字段/数据更新

先把原来数据表的sexy字段删除,然后重新在添加字段sexy,如果添加成功,sexy列的随机内容会更新.原数据表如下: using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Data.SqlClient; using System.Linq; using System.…

Linux理解文件操作 文件描述符fd 理解重定向 dup2 缓冲区 C语言实现自己的shell

文章目录 前言一、文件相关概念与操作1.1 open()1.2 close()1.3 write()1.4 read()1.4 写入的时候先清空文件内容再写入1.5 追加&#xff08;a && a&#xff09; 二、文件描述符2.1 文件描述符 fd 0 1 2 的理解2.2 FILE结构体&#xff1a;的源代码 三、深入理解文件描述…

jupyter notebook 设置密码报错ModuleNotFoundError: No module named ‘notebook.auth‘

jupyter notebook 设置密码报错ModuleNotFoundError: No module named ‘notebook.auth‘ 原因是notebook新版本没有notebook.auth 直接输入以下命令即可设置密码 jupyter notebook password

k8s调度原理以及自定义调度器

kube-scheduler 是 kubernetes 的核心组件之一&#xff0c;主要负责整个集群资源的调度功能&#xff0c;根据特定的调度算法和策略&#xff0c;将 Pod 调度到最优的工作节点上面去&#xff0c;从而更加合理、更加充分的利用集群的资源&#xff0c;这也是我们选择使用 kubernete…

Linux---软硬链接

软链接 我们先学习一下怎样创建软链接文件&#xff0c;指令格式为&#xff1a;ln -s 被链接的文件 生成的链接文件名 我们可以这样记忆&#xff1a;ln是link的简称&#xff0c;s是soft的简称。 我们在下面的图片中就是给test文件生成了一个软链接mytest&#xff1a; 我们来解…

数据结构篇其四---栈:后进先出的魔法世界

前言 栈的学习难度非常简单&#xff0c;前提是如果你学过顺序表和单链表的话&#xff0c;我直接说我的观点了&#xff0c;栈就是有限制的顺序表和单链表。 栈只允许一端进行插入删除。栈去除了各种情况复杂的插入删除&#xff0c;只允许一端插入删除的特性&#xff0c;这一种数…

5月4(信息差)

&#x1f384; HDMI ARC国产双精度浮点dsp杜比数码7.1声道解码AC3/dts/AAC环绕声光纤、同轴、USB输入解码板KC33C &#x1f30d; 国铁集团回应高铁票价将上涨 https://finance.eastmoney.com/a/202405043066422773.html ✨ 源代码管理平台GitLab发布人工智能编程助手DuoCha…

【数据结构】您有一份KMP算法教学已到账,请注意查收!!!

KMP算法 导读一、KMP算法1.1 重要术语1.2 部分匹配值1.3 部分匹配值的作用 二、KMP算法原理2.1 从指针的角度理解KMP算法2.2 从匹配的角度理解KMP算法2.3 小结 三、KMP算法的实现3.1 next数组3.2 next数组的计算3.2.1 通过PM值计算next数组3.2.2 通过移位模拟计算next数组3.2.3…

Web Storage 笔记11 网页数据存储

相关内容&#xff1a;Web Storage基本概念、localStorage、sessionStorage、登录注销实例、…… 在制作网页时会希望记录一些信息&#xff0c;例如用户登录状态、计数器或者小游戏等&#xff0c;但是又不希望用到数据库&#xff0c;就可以利用WebStorage技术将数据存储在用户浏…

Kubelet containerd 管理命令 ctr常用操作

镜像常用操作 1. 拉取镜像 ctr images pull docker.io/library/nginx:alpine 指定平台 --all-platforms&#xff1a;所有平台&#xff08;amd64 、arm、386 、ppc64le 等&#xff09;&#xff0c;不加的话下载当前平台架构 --platform&#xff1a;指定linux/amd64平台 ctr …

鸿蒙开发仿咸鱼TabBar

鸿蒙开发自定义TabBar&#xff0c;实现tabBar 上中间按钮凸起效果 第一步、定义数据模型 export default class TabItemData{defaultIcon: ResourceselectedIcon: Resourcetitle: stringisMiddle: booleanconstructor(defaultIcon:Resource, selectedIcon:Resource, title:st…

并发-启动线程的正确姿势

目录 启动线程的正确姿势 Start方法原理解读 Run方法原理解读 常见问题 启动线程的正确姿势 start()与run()方法的比较测试结果可以看出&#xff0c;runnable.run()方法是由main线程执行的&#xff0c;而要子线程执行就一定要先调用start()启动新线程去执行run方法并不能成…

【数据结构】第四讲:双向链表

目录 一、链表的分类 二、双向链表的结构及实现 1.带头双向链表的结构 2.创建节点 3.初始化 4.尾插 5.打印 6.头插 7.尾删 8.头删 9.在pos位置之后插入数据 10.删除pos节点 11.查找 12.销毁 个人主页&#xff1a;深情秋刀鱼-CSDN博客 数据结构专栏&#xff1a;数…

Mac M2 本地下载 Xinference

想要在Mac M2 上部署一个本地的模型。看到了Xinference 这个工具 一、Xorbits Inference 是什么 Xorbits Inference&#xff08;Xinference&#xff09;是一个性能强大且功能全面的分布式推理框架。可用于大语言模型&#xff08;LLM&#xff09;&#xff0c;语音识别模型&…

激动,五四青年节,拿下YashanDB认证YCP

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、My…

中间件之搜索和数据分析组件Elasticsearch

一、概述 1.1介绍 The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash&#xff08;也称为 ELK Stack&#xff09;。 能够安全可靠地获取任何来源、任何格式的数据&#xff0c;然后实时地对数据进行搜索、分析和可视 化。Elaticsearch&#xff0c;简称为 ES&a…