sql-libs-SQL注入学习记录-第一节(未完结)

2022-03-22 13:16:28 浏览数 (1)

前言:sql-libs是专门用来练习SQL注入的开源学习平台,我们常常在CTF的WEB题型中遇到SQL注入的题目类型,各种注入类型让我们难以解题,哪怕是面向WP解题也常常看不懂大佬们的payload,到底什么是盲注?什么是堆叠注入?什么是联合查询?如何根据回显得知哪些被过滤了......所有的这些种种,我们都希望能够搞明白:为什么? 在经历了一段时间的休整和对我之前的博客进行整理之后,我现在得以有一些时间去填我之前的坑,我们来系统,细致的去学习这些内容和知识点。

Sqli-labs的安装教程在这里:sqli-labs的安装 这里建议安装WAMP/MAMP(Windows/Mac版本)这里一系列的安装教程参考我之前的教程:安装教程

好 现在一切就绪,然我们开始吧! 为了做题方便和payload直观,这里就用HackBar,打开WAMP/MAMP,在浏览器上输入:

代码语言:javascript复制
Windows:127.0.0.1/sql/Less-1/  #这里安装的时候sql命名任意,根据命名在地址栏上输入
Mac:    localhost/sql/Less-1/  

这里我们先不做题,先来聊聊基础知识

一.注入的分类

1.基于从服务器接收到的响应

2.基于如何处理输入的SQL查询(数据类型)

3.基于程度和顺序的注入(哪里发生了影响)

一阶注射是指输入的注射语句对WEB直接产生了影响,出现了结果;二阶注入类似于存储型XSS,是指输入提交的语句无法直接对WEB应用程序产生影响,通过其它的辅助间接对WEB产生危害,这就是二阶注入。

4.基于注入点的位置上的

二.系统函数

介绍几个常用的函数:

代码语言:javascript复制
1. version() --MySQL版本
2. user()    --数据库用户名
3. database()--数据库名
4. @@datadir --数据库路径
5. @@version_comlipe_os--操作系统版本

三.字符串连接函数

函数的具体介绍(这又是另外一个坑,这里我不再展开细说,大家去看我另外一篇文章)

代码语言:javascript复制
1. concat(str1,str2,...) --没有分隔符地连接字符串
2. concat_ws(separator,str1,str2,...)--含有分割符地连接字符串
3. group_concat(str1,str2,...)--连接一个组的所有字符串,并以逗号分隔每一条数据

四.一般用于尝试的语句

代码语言:javascript复制
重点: --  可以用 # 代替,URL提交过程中编码后的 # 为 #
or 1=1-- 
'or 1=1-- 
"or 1=1-- 
)or 1=1-- 
')or 1=1-- 
") or 1=1-- 
")) or 1=1-- 

一般代码为:

代码语言:javascript复制
$id=$_GET['id'];
$sql="SELECT * FROM uesrs WHERE id='$id' LIMIT 0,1";

此处考虑两个点,一个是闭合前面的 ' 另一个是处理后面的 ' ,一般采用两种思路: 闭合后面的引号或者注释掉,注释掉采用 -- 或者 # (#)

五.union操作符的介绍

UNION操作符用户合并两个或多个SELECT语句的结果集。UNION内部的SELECT语句必须拥有相同数量的列。列必须也拥有相似的数据结构。同时,每条SELECT语句中的列的顺序必须相同 SQL UNION语法:

SELECT column_name(s)

0 人点赞