目录
sqli-labs解题笔记~准备篇
前言
最近开始对sql注入起了兴趣,刚好手头有一个新的靶场资源,开始在sqli-labs里练习练习
一、准备阶段
1、预备知识
进行sql注入练习需要一定的基础知识,下面列举一下
(1)大概方向
名称 | 具体要求 | 具体细节 |
---|---|---|
mysql数据库 | 简单了解 | 知道大致的分类以及构成,可以猜测表名等等 |
基本的sql语句 | 可以进行简单运用 | 掌握sql语法以及一些重要函数 |
url编码 | 简单了解 | 空格=’%20’,单引号=’%27’,双引号=’%22’,井号=’%23’.等于号=’%3d’ |
waf绕过 | 可以尝试使用url编码进行waf简单绕过 | 例如将空格改为%20,单引号改为%27,等于号改为%3d等. |
注释符 | 需掌握 | –+,–空格,# |
(2)Mysql函数
常用的重要函数
version() # 获取mysql数据库版本
database() # 获取当前数据库名
user() # 获取用户名
current_user() # 获取当前用户名
system_user() # 获取系统用户名
@@datadir # 获取数据库路径
@@version_compile_os # 获取操作系统版本
字符串函数
length() # 返回字符串的长度
substring() # 截取字符串
substr() # 截取字符串
mid() # 截取字符串
left() # 从左侧开始取指定字符个数的字符串
concat() # 没有分隔符的连接字符串
concat_ws() # 含有分割符的连接字符串
group_conat() # 连接一个组的字符串
ord() # 返回ASCII 码
ascii() # 返回ASCII 码
hex() # 将字符串转换为十六进制
unhex() # hex 的反向操作
md5() # 返回MD5 值
floor(x) # 返回不大于x 的最大整数
round() # 返回参数x 接近的整数
rand() # 返回0-1 之间的随机浮点数
load_file() # 读取文件,并返回文件内容作为一个字符串
sleep() # 睡眠时间为指定的秒数
if(true,t,f) # if 判断
find_in_set() # 返回字符串在字符串列表中的位置
benchmark() # 指定语句执行的次数
(3)重要的库名和表名
重要的数据库
information_schema # 重要的数据库
重要的表
schemata # 数据库信息
schema_name
##
tables # 表信息
table_schema
table_name
##
columns # 字段信息
column_name
2、准备工具
先来了解一下sql注入的分类
(1)sql注入分类
注入点
- 数字类型的注入
- 字符串类型的注入
提交方式
- GET注入
- POST注入
- COOKIE注入
- HTTP注入
获取信息的手段
- 基于布尔的盲注
- 基于时间的盲注
- 基于报错的注入
(2)Hackbar
由于注入方式的不同,提交参数的方式也不同,get方式可以直接在地址栏添加,而post方式则需要通过工具提交。这里分享老版本未收费的Hackbar。
hackbar插件下载
在Firefox中安装,然后禁止更新,下个版本收费…
结语
准备阶段告一段落,下一篇开始正式练习