漏洞挖掘前言

题目

Lab

SQL Injection Attack Lab

Pre

1、网上搜索并且阅读Four different tricks to bypass StackShield and StackGuard protection这篇文章,描述这些现有保护机制的弱点。

2、阅读下面这篇文章:
Bypassing non-executable-stack during exploitation using return-to-libc. 
http://www.infosecwriters.com/text_resources/pdf/return-to-libc.pdf

3、阅读这个链接的第3章,解释怎样构造 return2libc 的访问链 http://www.phrack.org/issues.html?issue=58&id=4

4、阅读这个链接
https://bbs.pediy.com/thread-224643.htm

解答

Lab

SQL Injection Attack Lab

Task1: select语句的sql注入

Step1:实验环境搭建

(1)、配置DNS:

输入命令: sudo vim /etc/hosts

其实可以发现是已经配置好了的,后面的不需要再重新配置。

(2)、关闭php配置策略

输入命令:sudo vim /etc/php5/apache2/php.ini

(3)、启动Apache:

输入命令:sudo service apache2 start

Step2:select语句的sql注入

(1)、用火狐浏览器打开网址www.sqllabmysqlphpbb.com,其登陆界面如下:

(2)、分析漏洞

在实验指导PDF中给出了这部分的后台sql语句:

假设我们要登陆管理员admin账户,却不知道密码。因为这里可以看出没有任何输入检测措施,我们可以直接在username框中输入admin’#,这样即把where语句改变为:

WHERE username = ’amdin’# AND user_password = ’md5($password)’;

我们知道,#在sql语句中是表示注释的,即密码验证部分被注释掉了,我们就可以这样直接绕过密码验证。

(3)、执行攻击

点击登陆,可以发现登陆成功,并且是以admin的身份登陆的,如下图:

Step3:尝试修改数据库

由于希望对其他用户数据进行非法篡改,我们考虑执行update更新操作。构建如下注入语句:

amdin’;update USERS_TABLE set username=’hacker’where username=’admin’#

原理上说,是没有问题的,我们可以试一试。

发现报错。分析原因是MySql中采取了一种特殊的保护机制,mysq_query不允许提交多个请求,导致我们两个连续的请求就会报错。

Task2:update语句的sql注入

Step1:首先注册一个自己的账号,如图所示:

Step2:使用Tamper Data插件,对递交信息进行修改

如果我们查看后台程序其实是可以发现整个更新(包括密码)都是放在一条set语句中的,而且没有对language进行输入审查,所以我们可以借此进行SQL注入,按照task1中方法把where语句偷换成where username=’bob’#,这样就把对我们自己账户的修改转移到了目标用户bob上,从而修改了他的密码。如下图:

这里具体的语句为:

我们在框中输入english’ where username=’bob’#

显示修改成功:

Step3:登陆验证攻击

我们登陆bob的账号,并使用我们刚才修改的密码654321登陆。

发现成功登陆bob的账号。

Task3:防御策略

SQL注入漏洞的根本问题是数据与代码的分离失败,因此我们可以针对这个原因进行防御

1、Escaping Special Characters using magic quotes gpc

默认开启magic_quotes_gpc,将magic_quotes_gpc值设为On。如果输入的数据有单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)等字符都会被加上反斜线。这些转义是必须的,如果这个选项为Off,那么我们就必须调用addslashes这个函数来为字符串增加转义。

2、Escaping Special Characters using addslashes()

addslashes()就是为变量中的'或者"加\,当有人在变量(url)打入特殊的字符串的时候,语义起到变化。加斜杠后破坏语义,所以起到防注入的作用。

3、Escaping Special Characters using mysql real escape string

避免使用特殊字,MySQL提供一个函数 mysql_real_escape_string(),这个函数可以用来过滤一些特殊字符;如\x00, \n, \r, \, ', " and \x1a;

4、Prepare Statement

预编译,传递给PreparedStatement对象的参数可以被强制进行类型转换,使开发人员可以确保在插入或查询数据时与底层的数据库格式匹配。

以上方法都能不同程度地提高数据库安全性。

Pre

1、网上搜索并且阅读Four different tricks to bypass StackShield and StackGuard protection这篇文章,描述这些现有保护机制的弱点。

(1)、在标准编译的C代码中,函数的参数位于堆栈中的高位地址,而不是返回地址,返回地址位于保存的帧指针之后,该指针始终位于局部变量之后。 当存在基于堆栈的缓冲区溢出条件时,我们可能能够控制函数的参数,这可能会将受保护的程序转变为易受攻击的程序。

(2)、StackGuard8的默认设置是使用金丝雀,固定值为0x000aff0d。 对于常见的字符串操作,不可能通过这个金丝雀写入,但是可以在不改变它的情况下写入金丝雀,有效地获得对帧指针的完全控制。

(3)、对于StackGuard,如果错误不是一次溢出而是完全缓冲区溢出,并且如果使用了金丝雀,我们可以完全控制调用者的帧指针,而不仅仅是一个字节。 StackShield也是如此,因为它不使用金丝雀。

(4)、在标准编译的C代码中,当不使用-fomit-frame-pointer14all时,相对于帧指针访问局部变量,如果我们完全控制它,我们可以选择在内存中放置局部变量的位置。

2、阅读下面这篇文章:

Bypassing non-executable-stack during exploitation using return-to-libc.

缓冲区溢出的常用攻击方法是用shellcode的地址来覆盖漏洞程序的返回地址,使得漏洞程序去执行存放在栈中shellcode。为此有一种栈不可执行的保护机制使得以上方法失效

return-to-libc 攻击不需要一个栈可以执行,甚至不需要一个 shellcode。这个方法的基本原理是让漏洞程序调转到现存的代码(比如已经载入内存的libc库中的system()函数等)来实现我们的攻击。

3、阅读这个链接的第3章,解释怎样构造 return2libc 的访问链

fake_ebp0应该是“第一帧”的地址,fake_ebp1 - 第二帧的地址等。

接着:

1)易受攻击的函数的结尾(leave;ret)将fake_ebp0放入%ebp并返回到leaveret。

2)接下来的2条指令(leave; ret)将fake_ebp1放入%ebp并返回f1。 f1为合适的参数。

3)f1执行,然后返回。步骤2和3重复,用f1代替f2,f3,...,fn。

4、阅读这个链接https://bbs.pediy.com/thread-224643.htm

这篇文章主要展示了利用栈溢出绕过金丝雀。

主要的难点就是获取金丝雀的值。这题中有个fork。对fork而言,作用相当于自我复制,每一次复制出来的程序,内存布局都是一样的,当然canary值也一样。 那我们就可以逐位爆破,如果程序GG了就说明这一位不对,如果程序正常就可以接着跑下一位,直到跑出正确的canary。直接爆破canary。这是个32位的程序,所以canary有4个字节,最低位一定是\x00,所以只需要爆破三个字节即可。

漏洞挖掘——实验9 SQL Injection Attack Lab相关推荐

  1. 从入门到入土:[SEED-Lab]-SQL注入攻击|SQL Injection Attack Lab|详细说明|实验步骤|实验截图

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  2. 脏牛(Dirty COW)漏洞攻击实验(SEED-Lab:Dirty-COW Attack Lab)

    <脏牛(Dirty COW)漏洞攻击实验> 目录 <脏牛(Dirty COW)漏洞攻击实验> **一:实验目的** **二:实验步骤与结果** **漏洞原理:** **COW机 ...

  3. 漏洞挖掘——实验12 Cross-Site Scripting (XSS) Attack Lab

    漏洞挖掘前言 题目 Lab Cross-Site Scripting (XSS) Attack Lab Pre 1.名词解释:double free,UAF (Use After Free),RELR ...

  4. 漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

    漏洞挖掘前言 题目 Lab 侧信道攻击 + TCP/IP实验 Pre 1.用IE访问某些网站的时候,输入javascript:alert(document.cookie)会有什么反应,解释原因. 2. ...

  5. 漏洞挖掘——实验3 Race_Condition

    漏洞挖掘前言 题目 lab Race_Condition pre 1.查看这段代码的执行结果,解释%.20d和%hn的含义. main() {int num=0x41414141;printf(&qu ...

  6. 【科软课程-信息安全】Lab12 SQL Injection Attack

    目录 1.0 概述 2.0 实验环境 3.0 实验任务 3.1 task1 熟悉SQL语句 3.2 task2 对SELECT语句的SQL注入攻击 3.3 task3 对UPDATE语句的SQL注入攻 ...

  7. mysql服务攻击检测_3款SQL INJECTION攻击检测工具_MySQL

    SQLinjection 随着 SQL INJECTION 攻击的明显增多,微软近日发布了三个免费的攻击检测工具,可帮助网站管理员和检测存在的风险并对可能的攻击进行拦截. 工具一: Scrawlr 下 ...

  8. 施耐德NOE77101以太网模块固件逆向漏洞挖掘

    MIS 固件逆向漏洞挖掘 实验目的 选取任意一个路由器.摄像头或者其它智能设备的固件漏洞,对目标固件进行逆向工程和漏洞分析,剖析漏洞机理,找到漏洞利用方法,编写漏洞利用代码,展示漏洞利用效果,简述漏洞 ...

  9. mysql服务攻击检测_SQL Injection(SQL注入)介绍及SQL Injection攻击检测工具

    1.关于SQL Injection迄今为止,我基本没有看到谁写出一篇很完整的文章,或者说很成熟的解决方案(能做到 的人肯定很多,问题是没有流传开来,很遗憾) 我简单的说几点,希望启发大家思考,起到抛砖 ...

  10. 从入门到入土:[SEED-Lab]-幽灵攻击|Spectre Attack Lab|详细说明|实验步骤|实验截图

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

最新文章

  1. 39个超实用jQuery实例应用特效
  2. lava.lang.String数据转换为java.sql.Date
  3. android ota 版本校验,OTA升级签名校验简析
  4. C++ code:main参数
  5. ASCII码对应表chr(9)、chr(10)、chr(13)、chr(32)、chr(34)、chr(39)、chr(..
  6. [Vue warn]: Duplicate keys detected: ‘0‘. This may cause an update error.
  7. [FFT/IFFT]快速傅里叶(逆)变化 + 递归和递推模板
  8. 获利上亿!一程序员主犯非法挖矿被抓
  9. oracle tips ---------keep update
  10. Matlab - 文件目录路径操作
  11. 引用父类成员的关键字是java_Java 中对父类成员访问用的关键字是 ,而引用当前对象的关键字是 。_学小易找答案...
  12. FISCO BCOS Transaction execution error合约执行失败原因
  13. 多边形面积的求法(已知每个点的坐标)hdu2036
  14. 夹水晶头8根网线的顺序
  15. 爬虫基础 || 2.1 request介绍(功能比urllib丰富,附上简单的知乎爬虫)
  16. 你的电脑或移动设备不支持Miracast
  17. mac的python怎么打中文空格_中英文排版空格问题解决方案
  18. 16福师硬盘是计算机的,福师16春《计算机应用基础》在线作业一
  19. android app 目标版本,android – 在gradle中使用目标sdk版本23时,ZBA...
  20. 链接、图像、列表、计数器

热门文章

  1. oracle redo 状态,理解ORACLE REDO与UNDO
  2. Fst, pi, TajimaD plink 计算
  3. 关于我的论文以及毕业设计的一些总结吧——基于物联网技术的智能实验室管理系统设计与实现
  4. 【032】基于51单片机的PT100热电阻温度计Proteus仿真设计
  5. 苹果连接电脑 计算机不显示硬盘,苹果连接电脑没反应怎么办?苹果连接电脑没反应解决方法...
  6. 那人立在侧边 水浒传
  7. ARM9开发板连接鼠标和键盘
  8. 基于Laravel的会计财务系统
  9. tenforflow版YOLOv3下VOC数据集的准备和训练
  10. 电子邮件服务器的ip地址_EDM电子邮件营销,你真的了解么?