SQL注入之手工注入
SQL注入从注入的手法或者工具上分类的话可以分为:
· 手工注入(手工来构造调试输入payload)
· 工具注入(使用工具,如sqlmap)
今天就给大家说一下手工注入:
手工注入流程
判断注入点
注入的第一步是得判断该处是否是一个注入点。或者说判断此处是否有SQL注入漏洞。最简单的判断方法就是在正常的参数后加单引号 '。 id=1'
以看到数据库报错了,最重要的就是能够看懂数据库的错误信息,从错误信息中我们可以知道是单引号的匹配出了问题,也就是说我们添加的单引号成功被数据库解析,那么我们就可以通过闭合这个id这个参数,然后插入自己构造的sql语句实施攻击。我们按照步骤来,一般可以使用联合表的方式来提取自己感兴趣的信息(union),但是使用union语句有个前提就是union 后面的语句必须与前面的语句字段数以及类型必须一直,否则数据库会报错
如果页面显示了SQL的错误信息,进一步测试: id=1' or 1=1--+
再测试: id=de' and 1=2--+ ,基本确定注入存在
判断查询的字段数,使用order by number
输入 order by 5
order by 4 均会报错
可以看到order by 3的时候页面显示正常
确定回显位
确定了查询数据的位数,然后开始确定网页的回显位。回显位就是确定查询出来的数据是在网页上面的哪个位置显示出来。使用Union联合查询来确定回显位。
获取信息函数:
user() 获取当前用户用户
database() 获取当前数据库
version() 获取数据库版本
@@version_compile_os 获取操作系统版本
举个例子(就不和大家一一解释啦):
获取数据库里的数据
获取所有的数据库名:
获取所有的表名:
获取所有的列名:
我们就拿users这个表举个例子吧
获取数据:
单个数据取出
全部数据取出
总结:
一个手工的sql注入接班就是这样,上面有什么错误,欢迎大家指出.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)