摘要:
MYSQL注入天书 在线版本:xianzhi.aliyun.com 第一篇地址:https://xianzhi.aliyun.com/forum/read/314.html第二篇地址:https://xianzhi.aliyun.com/forum/read/328.html第三篇地址:https: 阅读全文
摘要:
写在前面的一些内容 请允许我叨叨一顿: 最初看到sqli-labs也是好几年之前了,那时候玩了前面的几个关卡,就没有继续下去了。最近因某个需求想起了sqli-labs,所以翻出来玩了下。从每一关卡的娱乐中总结注入的方式,这就是娱中作乐,希望能保持更大的兴趣学下去。而很多的东西不用就忘记了,有些小的知识点更是这样,网上搜了一下相关资料,基本上同仁前辈写的博客中讲解基础关。脑门一热决定给后面的人留下点... 阅读全文
摘要:
《mysql注入天书》之 SQLI和sqli-labs介绍 SQLI,sql injection,我们称之为sql注入。何为sql,英文:Structured Query Language,叫做结构化查询语言。常见的结构化数据库有MySQL,MS SQL ,Oracle以及Postgresql。Sq 阅读全文
摘要:
第一部分/page-1 Basic Challenges Background-1 基础知识 此处介绍一些mysql注入的一些基础知识。 (1)注入的分类---仁者见仁,智者见智。 下面这个是阿德玛表哥的一段话,个人认为分类已经是够全面了。理解不了跳过,当你完全看完整个学习过程后再回头看这段。能完全理解下面的这些每个分类,对每个分类有属于你的认知和了解的时候,你就算是小有成就了,当然仅仅是sql... 阅读全文
摘要:
Less-1 我们可以在http://127.0.0.1/sqllib/Less-5/?id=1后面直接添加一个 ' ,来看一下效果: 从上述错误当中,我们可以看到提交到sql中的1'在经过sql语句构造后形成 '1'' LIMIT 0,1,多加了一个 ' 。这种方式就是从错误信息中得到我们所需要的信息,那我们接下来想如何将多余的 ' 去掉呢? 尝试 'or 1=1--+ 此时构造的sql语... 阅读全文
摘要:
Less-2 将'(单引号)添加到数字中。 我们又得到了一个Mysql返回的错误,提示我们语法错误。 YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear''LIMIT0,1... 阅读全文
摘要:
Less-3 我们使用?id=' 注入代码后,我们得到像这样的一个错误: MySQLserverversionfortherightsyntaxtousenear"")LIMIT0,1′atline1 这里它意味着,开发者使用的查询是: Selectlogin_name,selectpasswordfromtablewhereid=('ouri... 阅读全文
摘要:
Less-4 我们使用?id=1" 注入代码后,我们得到像这样的一个错误: 这里它意味着,代码当中对id参数进行了 "" 和 () 的包装。 所以我们再用这样的代码来进行注入: 这样一来,我们便可以得到用户名和密码了,同时后面查询也已经被注释掉了。 在源代码中的SQL查询语句,31行: 可以成功注入 阅读全文
摘要:
Background-2 盲注的讲解 何为盲注?盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。从background-1中,我们可以知道盲注分为三类 •基于布尔SQL盲注 •基于时间的SQL盲注 •基 阅读全文
摘要:
Less-5 这里说一下,有很多的blog是翻译或者copy的,这关正确的思路是盲注。从源代码中可以看到,运行返回结果正确的时候只返回you are in....,不会返回数据库当中的信息了,所以我们不能利用上述less1-4的方法 我们从这这一关开始学习盲注。结合background-2的信息,将 阅读全文
摘要:
Less-6 Less6与less5的区别在于less6在id参数传到服务器时,对id参数进行了处理。这里可以从源代码中可以看到。 $id = '"'.$id.'"'; $sql="SELECT * FROM users WHERE id=$id LIMIT 0,1"; 那我们在这一关的策略和less5的是一样的。只需要将 ' 替换成 " . 这里我们演示其中一个payload http:... 阅读全文
摘要:
Background-3 导入导出相关操作的讲解 load_file()导出文件 Load_file(file_name):读取文件并返回该文件的内容作为一个字符串。 使用条件: A、必须有权限读取并且文件必须完全可读 and (select count(*) from mysql.user)>0/* 如果结果返回正常,说明具有读写权限。 and ... 阅读全文
摘要:
Less-7 本关的标题是dump into outfile,意思是本关我们利用文件导入的方式进行注入。而在background-3中我们已经学习了如何利用dump into file. 这里首先还是回到源代码中去。重点放在对id参数的处理和sql语句上,从源代码中可以看到$sql="SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1"; 这里对id参... 阅读全文
摘要:
Less-8 经过简单的测试,我们发现 'or 1=1--+返回正常,那么我们就基本知道应该怎么使用了,参考less5.这里简单的进行一个示例: http://127.0.0.1/sqllib/Less-8/?id=1%27and%20If(ascii(substr(database(),1,1))=115,1,sleep(5))--+ 这里用的延时注入,当然了我们使用布尔类型的注入也是可以... 阅读全文
摘要:
Less-9 本关我们从标题就可以看到 《基于时间-单引号》,所以很明显的这关要我们利用延时注入进行,同时id参数进行的是 ' 的处理。这里我们大致的将延时注入的方法演示一次。 这里用sleep()函数。 这里因为我们利用的是时间的延迟,贴图就没有意义了,这里只写payload了:(正确的时候直接返回,不正确的时候等待5秒钟,只贴正确的) 猜测数据库: http://127.0.0.1/sqlli... 阅读全文
摘要:
Less-10 本关我们从标题就可以看到 《基于时间-双引号》,所以很明显的这关要我们利用延时注入进行,同时id参数进行的是 " 的处理。和less9的区别就在于单引号(')变成了("),我们这里给出一个payload示例,其他的请参考less-9 猜测数据库: http://127.0.0.1/s 阅读全文
摘要:
Less-11 从这一关开始我们开始进入到post注入的世界了,什么是post呢?就是数据从客户端提交到服务器端,例如我们在登录过程中,输入用户名和密码,用户名和密码以表单的形式提交,提交到服务器后服务器再进行验证。这就是一次post的过程的。 例如我们在less11中我们输入正确的用户名和密码后, 阅读全文
摘要:
Less-12 本关和less11是类似的,只是在id 的参数的处理上有一定的不同 当输入username:admin" Password: (随便) 报错后的结果为: You have an error in your SQL syntax; check the manual that corre 阅读全文
摘要:
Less-13 本关我们输入username:admin' Password: (随便输) 进行测试 可以看到报错了,错误为: You have an error in your SQL syntax; check the manual that corresponds to your MySQL 阅读全文
摘要:
Less-14 本关我们直接进行测试,输入username:admin" Pasword:(随意) 可以看到报错了,那么我们知道了id进行了 " 的操作。 这里和less13一样,主要是熟悉利用盲注。 简单列一下payload: uname=admin"and left(database(),1)>'a'#&passwd=1&submit=S... 阅读全文