歌曲封面 未知作品

网站已运行 1 年 247 天 14 小时 25 分

Powered by Typecho & Sunny

2 online · 49 ms

歌曲封面 未知作品

网站已运行 1 年 247 天 14 小时 25 分

Powered by Typecho & Sunny

4 online · 55 ms

小野博客 小野(Hirono)博客的个人网站,主要讲述关于小野的一些陈芝麻烂谷子事。网络、生活、我的主张,也是一个自留地
Title

😑 SQL注入之基于错误的SQL盲注

小野

·

📟前端日记

·

Article
始于理论,源于实践,终于实战小野博客安全,每天一点点激情永无限,进步看得见

基于错误的 SQL 注入

基于错误的 SQL 注入是指您能够使用错误消息从数据库中提取或推断敏感数据的情况。也就是说有的注入数据库会返回注入查询的结果,有的不返回查询结果,但是会返回一些数据库的查询报错信息,即使不返回报错也会有行为的差异变化。

原理

在一些情况下,我们可以使用单引号'来闭合引号前面的字符串而联合定义的语句使返回想要的信息来到达注入的目的,但是有些情况下不回返回信息,而会返回一些错误信息。如果提交双引号''而错误信息了,说明这里有单引号未闭合的响应可以供我们挖掘漏洞。接下来我们要确认单引号引起的错误是 SQL 语法错误,而不是其他类型的错误。我们首先使用有效的 SQL 语法构造子查询。'||(SELECT '' FROM my-table)||'查询一个任意表,这里是my-table表,如果返回错误信息(500码或302码),则表明后端正在执行SQL 查询处理。只要始终注入语法有效的 SQL 查询,就可以使错误响应来推断有关数据库的关键信息。如'||(SELECT '' FROM users WHERE ROWNUM = 1)||'(从users表选择空字符串,而且只返回1行,||与外部语句进行拼接)验证 users 表(也可以是其他表)是否存在。如未返回错误则推断此表确实存在。为了诱使系统生成错误消息,并包含查询返回的一些数据,可以使用 CAST() 函数来实现。能够将一种数据类型转换为另一种数据类型;如CAST((SELECT my_column FROM example_table) AS int)。还可以使用'||(SELECT CASE WHEN (1=1) THEN TO_CHAR(1/0) ELSE '' END FROM users)||'(case函数类似开发语言中的if-else,即1=1条为真时执行then值,否则执行else,最后结束)验证是否收到错误消息。利用case函数可以一步一步的猜解用户名密码。

现在已有 47 次阅读,0 条评论,3 人点赞

广告

页底广告 页底广告
Comment:共0条
发表
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主 网站设置有【CDN】缓存,留言等评论内容需要12小时才能显示! 不再显示
博主