打靶sqli-labs靶场3-4


SQL注入基本流程

1.判断是否为动态网站

判断是否为动态网站根本依据是网站是否与后端数据库相连,过程很简单只需要在网站里输入不同的ID,如果会出现不同的数据就证明这是一个动态网站。输入ID的地方通常有两个,一个是网站里的输入框,一个是浏览器网站的输入框。

在网站里的输入框可直接输入字符;

在这里插入图片描述

在浏览器网站输入框输入字符时,需要注意两点:在地址后面输入,在输入ID前要加上?ID=之后再输入字符。

在这里插入图片描述

2.输入\(这里可以随便输入符号,只是\与其他字符容易分清)得到开发程序员用什么字符闭合ID

在第一步输入的ID后面加\,会得到回显,回显中会显示开发程序员用什么字符闭合ID的,如图所示就是’)

在这里插入图片描述

3.输入布尔表达式判断是否存在SQL注入

根据第二步得到开发程序员用的闭合ID字符,在输入框输入1’) and 1=1。如果得到输出结果,证明用户可通过输入SQL语句得到数据,所以存在SQL注入

在这里插入图片描述

4.利用order by得到列数,利用union select得到输出点

输入1’) order by 3 – -,会得到回显列数证明大于等于3列

在这里插入图片描述

输入1’) order by 4 – -,显示4是未知列,所以总共只有3列

在这里插入图片描述

知道有3列后就通过-1’) union select 1,2,3 – -找到输出点,如图所示输出点为:2和3

在这里插入图片描述

5.使用union select得到基本信息,然后爆数据库、爆数据表、爆列(字段)、爆数据


在进行第五步之前需要复习一下一丢丢数据库的知识
version():用来查询数据库版本
查询版本号的原因是判断版本号是否在5.0以上,数据库版本在5.0以上则会含有information_schema库
在information_schema库中有两个重要的表(COLUMNS、TABLES)
1.1)COLUMNS表中含有三个重要的列TABLE_SCHEMA、TABLE_NAME、COLUMN_NAME
1.2)TABLE_SCHEMA列包含所有的数据库名
1.3)TABLE_NAME列包含所有的数据表名
1.4)COLUMN_NAME列包含所有的列名
2.1)TABLES表中包含数据库和表的对应关系,含有两个重要的列(TABLE_SCHEMA、TABLE_NAME)
2.2)TABLE_SCHEMA列包含所有数据库名
2.3)TABLE_NAME列包含所有数据表名
database():用来查询数据库名
group_concat():显示所有查询到的数据

使用-1’) union select 1,version(),database() – -得到数据库版本和数据库名,得到版本号在5.0以上就可以使用information_schema库以及里面的表和列

在这里插入图片描述

我们通过上一步知道了mysql的版本号以及与网站相连的数据库名,然后我们就可以使用information_schema库里的tables表中的table_schema和table_name这两列的对应关系得到与网站相连的数据库里的表,简而言之就是已知数据库名,然后通过tables表中数据库名和数据表名的对应关系,得到已知数据库里的表名。

用-1’) union select 1,group_concat(table_name),3 from information_schema.tables where tables.table_schema=‘security’ – -,在2输出点那里就会输出security数据库里面的所有表名:emails,referers,uagents,users

在这里插入图片描述

得到表名之后,我们就可以通过表名得到里面的列名,这个需要用到information_schema库里的columns表中的三个列,table_schema(数据库名)、table_name(数据表名)、column_name(列名),现如今我们已知数据库名和数据表名那么我们就能查到列名。选择一个自己想知道表里内容的表,我选的是users这个表。

使用-1’) union select 1,group_concat(column_name),3 from information_schema.columns where columns.table_schema=‘security’ and columns.table_name=‘users’ – -
结果也是在2输出点输出,security库里users表里有id,username,password三个列

在这里插入图片描述

得到列名之后,就可以查询数据了,通过上一步我们知道在users表中有id,username,password三个列,我们便可以查询username,password。
使用-1’) union select 1,group_concat(username),group_concat(password) from users – -
会得到users表中的username和password,也就是网站所有的用户名和密码

在这里插入图片描述

得到所有的用户名和密码至此SQL注入结束,当然还可以利用information_schema库里的tables、columns表查询到其他库里的数据。

less 3的打靶过程

在前面的SQL注入的基本流程中用的就是less 3演示的,所以关于less 3的打靶过程我们一带而过

1.判断是否为动态网站

输入ID不同,数据不同,则为一个动态网站,第一幅图是ID=1的结果,第二幅图是ID=2的结果。

在这里插入图片描述
在这里插入图片描述

2.得到闭合字符

输入\会得到回显,在回显中\后面的符号就是闭合符号('))

在这里插入图片描述

3.判断是否存在SQL注入

在输入框输入1’) and 1=1。如果得到输出结果,证明用户可通过SQL语句得到数据,所以存在SQL注入

在这里插入图片描述

4.判断输出列数,得到输出点

第三列显示回显,第四列显示未知列,所以输出三列

在这里插入图片描述
在这里插入图片描述

确定列数之后,便可以通过union select得到输出点

在这里插入图片描述

5.得到基本信息,爆库、爆表、爆列、爆数据

使用union select得到基本信息,版本号和数据库名

在这里插入图片描述

爆库,得到表名

在这里插入图片描述

爆表,得到列名

在这里插入图片描述

爆列,得到数据

在这里插入图片描述

至此,less 3的打靶过程结束。

less 4的打靶过程

1.判断是否是动态网站

根据ID不同得到不同的回显内容,由此判断这是一个动态网站。

在这里插入图片描述
在这里插入图片描述

2.输入\得到闭合符号

输入\后,得到回显之后\之后就是闭合符号,在less 4中的闭合符号是")

在这里插入图片描述

3.输入布尔表达式判断是否存在SQL注入

输入一个布尔表达式,得到了回显,证明用户可通过输入SQL语句得到数据,所以存在SQL注入

在这里插入图片描述

4.判断输出列数和输出点

使用1") order by 3 – -得到了回显,证明不止有三列,使用1") order by 4 – -显示4列是未知列,所以总共是3列
在这里插入图片描述

在这里插入图片描述
使用-1") union select 1,2,3 – -,得到输出点,如图所示,2和3是输出点
在这里插入图片描述

5.得到基本信息,爆库,爆表,爆列,爆数据

使用-1") union select 1,version(),database() – -,得到数据库版本和数据库名,数据版本在5.0以上则可以使用information_schema库以及该库里的表和列
在这里插入图片描述

通过information_schema库里的tables表得到security库里面的表
使用-1") union select 1,group_concat(table_name),3 from information_schema.tables where tables.table_schema=‘security’ – -

在这里插入图片描述
通过information_schema库里的columns表得到users表中的列
使用-1") union select 1,group_concat(column_name),3 from information_schema.columns where columns.table_schema=‘security’ and columns.table_name=‘users’ – -
在这里插入图片描述
通过上一步得到的列,然后得到想要的数据
使用-1") union select 1,group_concat(username),group_concat(password) from users – -
在这里插入图片描述
至此,less 4 打靶过程也结束了


总结

less 3和less 4的打靶过程就只有闭合符号不同,其余的命令都一模一样。但目的为了熟悉SQL注入的流程,所以我们再次总结一下SQL注入流程
1.是否为动态网站
2.得到闭合符号
3.判断是否存在SQL注入
4.判断输出列和输出点
5.得到基本信息,爆库,爆表,爆列,爆数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值