2017-2018-220179305《网络攻防技术》第十一周作业(代码片段)

魔幻小生 魔幻小生     2022-11-15     239

关键词:

SQL注入实验

实验介绍

在本次实验中,我们修改 phpBB的web应用程序,并且关闭了phpBB实现的一些对抗SQL注入的功能。因而我们创建了一个可以被SQL注入的phpBB版本。尽管我们的修改是人工的,但是它们代表着web开发人员的一些共同错误。学生的任务是发现SQL注入漏洞,实现攻击者可以达到的破坏,同时学习抵挡这样的攻击的技术。 

预备知识

1、 SQL语言

结构化查询语言(Structured Query Language)简称SQL:是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

常见SQL语句

2、SQL注入

SQL注入:SQL注入能使攻击者绕过认证机制,完全控制远程服务器上的数据库。SQL是结构化查询语言的简称,它是访问数据库的事实标准。目前,大多数Web应用都使用SQL数据库来存放应用程序的数据。几乎所有的Web应用在后台都使用某种SQL数据库。跟大多数语言一样,SQL语法允许数据库命令和用户数据混杂在一起的。如果开发人员不细心的话,用户数据就有可能被解释成命令,这样的话,远程用户就不仅能向Web应用输入数据,而且还可以在数据库上执行任意命令了。
sql注入原理讲解

3、SQL注入危害

非法读取、篡改、添加、删除数据库中的数据。
盗取用户的各类敏感信息,获取利益。
通过修改数据库来修改网页上的内容。
私自添加或删除账号。
注入木马等等。

环境配置

实验需要三样东西, Firefox、 apache、 phpBB2(镜像中已有):

① 运行 Apache Server:镜像已经安装,只需运行命令sudo service apache2 start

② phpBB2 web 应用:镜像已经安装,通过 http://www.sqllabmysqlphpbb.com 访问,应用程序源代码位于/var/www/SQL/SQLLabMysqlPhpbb/

③ 配置 DNS: 上述的 URL 仅仅在镜像内部可以访问,原因是我们修改了/etc/hosts文件使 http://www.sqllabmysqlphpbb.com 指向本机 IP。如果需要在其他机器访问,应该修改 hosts 文件,使 URL 映射到 phpBB2 所在机器的 IP。

④ 关闭对抗措施
PHP 提供了自动对抗 SQL 注入的机制,被称为 magic quote,我们需要关闭它:

找到/etc/php5/apache2/php.ini


找到 magic_quotes_gpc =On这一行,把On改为Off:

重启 Apache:sudo service apache2 restart

实验任务

① 对 SELECT 语句的攻击

首先访问虚拟机内的URL:www.sqllabmysqlphpbb.com。在进入phpBB之前系统会要求你登陆。这个登陆认证由服务器上的 login.php 实现,需要用户输入用户名
和密码来通过认证。用户键入用户名和密码后,login.php 会将它们与 mysql 数据库中的 username 和user_password 字段进行比较,如果匹配就登陆主界面。和其他大多数 web 应用程序一样, PHP程序使用 SQL 语言与背后的数据库交互。

按常理来说,如果输入错误的用户名或密码,肯定是登录不了的。但是对于有SQL注入漏洞的网站来说,只要构造特殊的“字符串”,就能够成功登录。如在用户名输入框中输入\' or 1=1#,密码随便输入,此时合成的SQL查询语句为:select * from users where username=\'\' or 1=1#\' and password=md5(\'\')

“#”在mysql中是注释符,这样井号后面的内容将被mysql视为注释内容,不会去执行。即select * from users where username=\'\' or 1=1#\' and password=md5(\'\')等价于select * from users where username=\'\' or 1=1,因为1=1永远成立的,即where子句总是为真,该sql语句进一步简化之后,等价于select * from users。由于该页面不让输入“=”,所以我们只能输入alice\'#,就可以在不知道alice密码的情况下登录了。

② 对 UPDATE 语句的攻击

当用户想要在 phpBB2 中修改他们的资料时,可以点击 Profile,然后填写表单修改。用户发送修改请求后,会执行include/usercp_register.php中的一条 UPDATE SQL 语句。在这条语句中同样有一个 SQL 注入漏洞。

下面演示以 alice 登陆,目标是修改ted 的资料信息,包括他的密码。攻击成功后将可以登陆 Ted 的账号。

点击Memberlist查看ted的信息,可以看到一个带参数的脚本,猜测ted的id为6。

我们在profile页面中修改ted的信息,只需在修改资料后面加上\'where user_id=6#,即将update语句中interests后的语句全部注释掉,并将where条件设置成ted的id。

再次点击Memberlist查看ted的信息,发现已经修改成功!

③ 对抗 SQL 注入

SQL 注入漏洞的根本原因是没有将代码和数据区分开。当组建一个 SQL 语句时,程序(如 PHP 程序)知道哪个部分是代码哪个部分是数据。不幸的是当 SQL 语句送往数据库执行时,这个边界被打破,当程序被注入时, SQL 解释器看到的边界可能和最初的边界不一样。为了解决这个问题,保持服务端程序和数据库看到的边界一样就十分重要。

(1)使用 magic_quotes_gpc 避开特殊字符。我们只需要在单引号前加一个反斜杠()PHP 提供了自动在单引号、双引号、反斜杠和空字符前添加反斜杠的机制,如果这个
选项启用,那么所有这些从用户输入的特殊字符会被加反斜杠。启用方法为,修改/etc/php5/apache2/php.ini的 magic_quotes_gpc = On,然后重启 Apache。

(2)使用 addslashes()来避开特殊字符。

PHP 的方法 addslashes()可以达到 magic quote 同样的功能。如果 magic quote 没有弃用, phpBB2 的 代 码 会 使 用 该 功 能 来 防 止 SQL 注 入 攻 击 。 请 查 看 /var/www/SQL/SQLLabMysqlPhpbb 目录下的 common.php。实际上为了使 SQL 注入攻击成 功,我们注释掉了 phpBB2 的保护措施。 

请修改回 phpBB2 的保护功能,并观察移除下面代码中”and FALSE”前后的区别,描述 这个保护机制如果防止 SQL 注入攻击的。 

if( !get_magic_quotes_gpc() and FALSE ) 

为了帮助描述区别,你需要打印出 SQL 语句。

(3)使用 mysql_real_escape_string 避开特殊字符。

(4)Prepare Statement

2017-2018-220179305《网络攻防》第一周作业

Q1:你对师生关系的理解,希望是哪种关系?在我看来,师生关系是一种互相促进,良心发展的关系。师生在互动中所得到的不仅仅是知识的交融,更是心灵的碰撞。学生在获得知识的同时,更多的是收获到了学习的方法以及学... 查看详情

2017-2018-220179305《网络攻防技术》第二周作业

Q1国内外著名黑客介绍1、国内著名黑客黄鑫简介黄鑫,网名木马冰河,毕业于西安电子科技大学,职业是网络安全网站“安全焦点”冰河木马软件的创作者。99年,木马虽然已经在黑客中间遍布使用,但多数为国外的BO和BUS等木... 查看详情

2017-2018-220179305《网络攻防技术》第十一周作业(代码片段)

SQL注入实验实验介绍在本次实验中,我们修改phpBB的web应用程序,并且关闭了phpBB实现的一些对抗SQL注入的功能。因而我们创建了一个可以被SQL注入的phpBB版本。尽管我们的修改是人工的,但是它们代表着web开发人员的一些共同错... 查看详情

2017-2018-220179305《网络攻防技术》第十一周作业

研究缓冲区溢出的原理,至少针对两种数据库进行差异化研究缓冲区溢出是指当计算机向缓冲区内填充数据位数时,超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓... 查看详情

网络攻防常见的网络攻防技术——黑客攻防(通俗易懂版)(代码片段)

每个人都能看懂的网络攻防前言一、SQL注入二、XSS攻击1.反射型2.存储型三、CSRF攻击四、DDoS攻击五、DNS劫持六、JSON劫持七、暴力破解总结提示:文章同样适用于非专业的朋友们,全文通俗化表达,一定能找到你亲身... 查看详情

网络攻防实验三

查看详情

网络攻防_实验四

  查看详情

网络攻防实验一

一、安装windowsdir列文件名 二、Linux操作系统命令  查看详情

网络攻防_实验八

       查看详情

网络攻防_实验五

         查看详情

第四周网络攻防实践作业

第四周《网络攻防实践作业》 第一节。网络攻防技术与实践1. 网络嗅探l 定义:网络嗅探是利用计算机的网络端口解惑目的地为其他的计算机的数据报文,以监听数据流中所包含的信息。 l 攻击方式:攻击者... 查看详情

网络攻防_实验六

               查看详情

2017-2018-220179302《网络攻防》第九周作业

教材学习总结本周主要学习了《网络攻防---技术与实践》第9、10章的内容,主要学习了恶意代码攻防与软件安全攻防恶意代码安全攻防1.基础知识恶意代码是指使计算机按照攻击者的意图执行以达到恶意目标的指令集。类型包括... 查看详情

201993012019-2020-2《网络攻防实践》综合实践

201993012019-2020-2《网络攻防实践》综合实践论文信息ImprovedGroupOff-the-RecordMessaging(基于OTR协议的安全传输方法)HongLiuDepartmentofComputingandInformationSciencesKansasStateUniversityhongl@ksu.eduEugeneY.VassermanDepartmentof 查看详情

虚拟化网络攻防实践报告

虚拟化网络攻防实践实验 1.虚拟化网络攻防实践实验组成:l 靶机:包含应用系统和应用程序安全漏洞,髌骨走位攻击目标的主机。l 攻击机:安装一些专用的攻击软件,用于发起网络攻击的主机。l 攻击检测、分... 查看详情

202129032021-2022-2《网络攻防实践》实践7报告

202129032021-2022-2《网络攻防实践》实践7报告1.实践内容Linux系统远程攻防技术Linux远程口令猜测技术利用Linux系统上的finger、rusers和sendmail之类的服务列举出目标系统上的用户账户名,即可猜测相关口令Linux系统上的HTTP/HTTP 查看详情

2017-2018-220179306《网络攻防技术》

网络攻防环境的搭建与测试windows攻击机(VM_WinXPattacker)ip:linux攻击机(SEEDUbuntu9_August_2010)ip:windows靶机(VM_Metasploitable_xpsp1)ip:linux靶机(VM_Metasploitable_ubuntu)ip:winpingwin:winpinglinux:linuxpingwin:linuxpingli 查看详情

网络攻防实验三

...国人民公安大学Chinesepeople’ publicsecurityuniversity 网络对抗技术实验报告 实验三密码破解技术   学生姓名房斌年级2014级 区队 五区指导教师 高见  信息技术与网络安全学院2016年11月24日 查看详情