当前位置: 首页 > news >正文

Sqli-labs

1.搭建【前提是已经下载安装好phpstudy_pro】

1.1源码准备

1.1.1源码下载

这里从github下载

https://codeload.github.com/Audi-1/sqli-labs/zip/masterhttps://codeload.github.com/Audi-1/sqli-labs/zip/master

1.1.2下载的靶场源码放到WWW下

将刚才下载的压缩包解压到小皮的文件夹的WWW下

1.1.3修改配置信息

在刚才解压的文件夹中寻找sql-connections然后用记事本打开其中的db-creds.inc然后修改密码为root

1.1.4打开小皮,启动套件

1.1.5创建网站

小皮中点击网站,选择创建网站,然后开始配置网站,这里的根目录要选择到刚才我们下载的源码的解压后的文件夹,到期日期选择长一点

1.1.6访问网站首页

直接从小皮访问网站打开后得到这个页面

1.1.7数据库初始化

点击刚才的页面的Setup/reset Database for labs如此就是安装好了

1.1.8进入关卡,开始打靶场进行练习

 

2.sql练习

2.1 less-1

进入后可以看到这个页面提示中可以知道需要我们输入id作为带数值的参数,通过修改url来传递参数

参数说明:

?表示传递参数,通常都是在页面后会有 ?id=数值,这样的方式传递参数给服务器,然后给我们返 回参 数对应的页面信息,我们发现我们是在/后面直接使用?传递参数,此时参数会传递给默认页面。

多次改变我们的id的数值后,发现输入的数值不同,返回的内容也不同,那就意味着我们所输入的内容是带入到数据库进行查询然后返回的

然后我们尝试加个单引号来看看错误信息

闭合

一般的代码:

$id=$_GET[‘id’];
$sql=“SELECT * FROM name WHERE id=’$id’ LIMIT 0,1”;

我们可以看到,用户输入的id是被带到sql语句中进行拼接,然后执行的,而且,这个id两边是被’ ‘(两个单引号)给闭合起来的,所以在这个代码里’(单引号)就是闭合符。

MYSQL数据库的包容性比较强,如果你输错了数据的类型,MYSQL数据库会自动将其转换成正确的数据类型,比如输入1)、1"、1-等,只要数字后面的字符不是闭合符的,数据库都会把你输入的错误的数据转换成正确的数据类型。

但是,若输入的数字后面的字符恰好是闭合符,则会形成闭合,若闭合后形成的sql语句是错误的,那么sql语句执行就会错误,从而造成页面显示错误。 比如上方的那个一般代码中变量id是用‘’(单引号)引起来的,这里形成了一个闭合符,当我们传入参数id=1’就会导致第一个单引号与第二个单引号形成闭合,然后就多余了第三个单引号,此时就会报错

如何判断闭合符是什么呢

我们可以在传入参数时,只传入一个\(转义字符)

原理,当闭合字符遇到转义字符时,会被转义,那么没有闭合符的语句就不完整了,就会报错,通过报错信息我们就可以推断出闭合符。

分析报错信息:看\斜杠后面跟着的字符,是什么字符,它的闭合字符就是什么,若是没有,就为数字型。

比如在这一关中这里可以看到有一对单引号,那么闭合符就是单引号,且为字符型的sql注入【sql注入分为数字类型和字符类型】

扩展:LIMIT 用法

LIMIT 是 MySQL 内置函数,其作用是用于限制查询结果的条数。 其语法格式:

LIMIT [位置偏移量, 行数] 

一句话概括: 位置偏移量可以理解为跳过前 N 条记录,或从第 N 条记录开始,往后显示 N 条记 录。

select * 返回所有记录。

limit n 返回n条记录。

limit m,n 从m条记录开始返回n条记录。

补充: 使用order by判断表中字段数

ORDER BY 关键词用于对记录集中的数据进行排序。

用法 1:按某个字段进行排序:

语法:select 字段 1,字段 2 from 表名 order by 字段名;

用法 2:按第几个字段进行排序,如果超过查询的字段数,就报错 语法:select 字段 1,字段 2 from 表名 order by 数字;

例:order by 用于 MySQL 查询排序(升序)

order by 后跟上字段名时,是用于做排序,默认是升序。如果字段名后跟上 desc 则做降序。 如:

MariaDB [security]> select username from users order by id desc;

用法 3:按第几个字段进行排序,如果超过查询的字段数,就报错

语法:select 字段 1,字段 2 from 表名 order by 数字;

这里我们点击f12,打开hackbar开始查找字段数

解释一下这里所传入url的

?id=1正常传入参数

'(单引号)是单引号闭合id参数

order by 4 是判断是否存在4个字段数

--+在sql语言中是注释的作用,也就相当于python语言中的#  [sql的注释符号是--]  [这里的+,加号被url编码后相当于空格,而数据库会要求注释符后面有一个空格才会生效执行]

由于这里报错,提示“找不到第四个字段”,那么4超出了列表数,我们再试试3

可以查到列表,说明这里表格有3列

确定回显位。就是看表格里哪一列是显示在页面中的。这里就是显示第二列(name)和第三列(password)

获取当前数据名和版本号,这个就涉及mysql数据库的一些函数,记得就行。通过结果知道当前数据看是security,版本是5.7.26。

然后进行爆表

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

information_schema.tables表示该数据库下的tables表,点表示下一级。where后面是条件,group_concat()是将查询到结果连接起来。如果不用group_concat查询到的只有user。该语句的意思是查询information_schema数据库下的tables表里面且table_schema字段内容是security的所有table_name的内容

http://www.lryc.cn/news/546806.html

相关文章:

  • unreal engine gameplay abiliity 获取ability的cooldown剩余时间
  • 【GenBI优化】提升text2sql准确率:建议使用推理大模型,增加重试
  • 【六祎 - Note】SQL备忘录;DDL,DML,DQL,DCL
  • 高频 SQL 50 题(基础版)_1341. 电影评分
  • JavaScript 变量命名规范
  • 解决 uView-UI和uv-ui 中 u-tabs 组件在微信小程序中出现横向滚动条的问题
  • 20250304解决在飞凌的OK3588-C的Linux R4下解决使用gstreamer保存的mp4打不开
  • build gcc
  • 【每日论文】How far can we go with ImageNet for Text-to-Image generation?
  • STM32 两个单片机之间的通信
  • Linux 下使用traceroute来进行网络诊断分析
  • 基于vue框架的游戏商城系统cq070(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • SpringBoot接入DeepSeek(硅基流动版)+ 前端页面调试(WebSocket连接模式)
  • idea实现热部署
  • 记一次误禁用USB导致键盘鼠标失灵的修复过程
  • 0x03 http协议和分层架构
  • 【leetcode hot 100 189】轮转数组
  • 医药行业哪些招聘管理系统有AI功能?
  • .net8 使用 license 证书授权案例解析
  • golang的io
  • 全向广播扬声器在油气田中的关键应用 全方位守护安全
  • 76.读取计时器运行时间 C#例子 WPF例子
  • 嵌入式开发:傅里叶变换(5):基于STM32,实现CMSIS中的DSP库
  • 探秘基带算法:从原理到5G时代的通信变革【六】CRC 校验
  • MySQL——DQL、多表设计
  • XML 编辑器:全面指南与最佳实践
  • 【USRP】NVIDIA Sionna:用于 6G 物理层研究的开源库
  • DeepSeek开源周Day6:DeepSeek V3、R1 推理系统深度解析,技术突破与行业启示
  • intra-mart实现logicDesigner与forma联动
  • 《大语言模型的原理发展与应用》:此文为AI自动生成