逆向工程实验PRE8(自用,记录)

question 1:

网上搜索和阅读SQL Injection with MySQL这篇文章,描述SQL Injection的原因和危害,注意其中提到的单引号双引号和井号等特殊字符。思考如何才能防止SQL Injection。

回答:

什么是SQL Injection?
通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

SQL Injection的原因
由不安全的数据库配置或数据库平台的漏洞所致;
程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

SQL Injection的危害
非法读取、篡改、添加、删除数据库中的数据;
数据库信息泄漏;
网页篡改;
网站被挂马;
服务器被远程控制,被安装后门等。

如何才能防止SQL Injection?
检查变量数据类型和格式;
过滤特殊符号;
绑定变量,使用预编译语句等。

question 2:

SQL Injection过程中,需要猜测未知的数据表名和字段名以及密码,描述一下常用的猜测手段。

回答:

猜表
一般的表的名称是admin adminuser user pass password 等。
如:and 0<>(select count(*) from admin) —判断是否存在admin这张表。

猜帐号数目
如果遇到0< 返回正确页面, 1<返回错误页面,说明帐号数目就是1个。
and 0<(select count(*) from admin)

猜解字段名称
在len( ) 括号里面加上我们想到的字段名称。
如:and 1=(select count(*) from admin where len(password)>0)

猜解各个字段的长度
猜解长度就是把>0变换 直到返回正确页面为止。
如:and 1=(select count(*) from admin where len(name)>6)

猜解字符
如:and 1=(select count(*) from admin where left(name,1)=a) —猜解用户帐号的第一位。

question 3:

(一定要看)阅读Basic SQL Tutorial
http://www.w3schools.com/sql/
http://www.w3schools.com/php/
以及阅读SQL Injection Attacks by Example
http://www.unixwiz.net/techtips/sql-injection.html

回答:

http://www.w3schools.com/sql/
本文章介绍的是:
SQL的基本语法和用法,包括数据库的建立和删除;
表的建立和删除;
表的主码、外部码、视图、索引;
对表中数据的选择、插入、删除、排序、最大最小、计数、平均值、求和、更新、连接等等

http://www.w3schools.com/php/
本文章介绍的是:
PHP的基本语法、数据类型、输出、字符串、常量、循环、函数、数组等。
PHP表单的基本处理方法
PHP更高级的语法
MySQL数据库

http://www.unixwiz.net/techtips/sql-injection.html
本文章介绍的是:
一个SQL注入实例
首先,尝试一些输入,包括普通的输入和编造的输入
WHERE field =' anything'or'x'='x ';
这个语句就使得原先的字符串的单引号提前结束,后面换上了一个或语句
通过这种方式观察到各种输入三种不同的反应:“您的登录信息已邮寄至电子邮件 ”、“我们无法识别您的电子邮件地址”、“服务器错误”。
第二,猜测一些字段名称,包括电子邮件、passwd文件、登录ID等。
当知道字段名称后,开始猜测这些字段所在的表名。
第三,寻找一些用户表中的成员,这里可以说是一个猜测过程,凭运气。
最后,通过更新表的方式,使用"I lost my password"跟新邮件地址,结果顺利收到了电子邮件的密码提示。

question 4:

(选做,实在搞不定可以网上搜索walkthrough)HTS Realistic 4。先去http://www.hackthissite.org/注册,然后利用SQL Injection完成下面这一关,目的是获得a list of the email addresses。
在这里插入图片描述
回答:

首先进入http://www.hackthissite.org/进行注册,成功注册后会收到确认邮件
在这里插入图片描述
进入题目所给的链接http://www.hackthissite.org/missions/realistic/4/
在这里插入图片描述
在上图可以看到两个商品链接,点击进入后发现是分别是大衣和皮鞋的,需要注意的是,这两个链接的URL中都有category,且分别是category=1和category=2,所以利用SQL Injection的方法来解决这个问题
在这里插入图片描述
在这里插入图片描述
在category=1的URL后面分别添加如下代码:Order by 1,Order by 2,Order by 3,……
SQL ORDERBY子句用于对SELECT语句的结果集中的记录进行排序。
当添加到order by 5时无法加载任何信息
在这里插入图片描述
接下来用SQL注入中的联合语句来获取邮件的地址
union all select 1,2,3,4 from email添加到category=1 的后面
即在导航栏输入:
http://www.hackthissite.org/missions/realistic/4/products.php?category=1 union all select 1, 2, 3, 4 from email
会看见如下图的页面:
在这里插入图片描述
可以发现很多图片的右边都显示数字2和3
所以改动一下刚刚输入的代码,将2或者是3用星号代替,这里我将3用星号代替
即在导航栏输入:
http://www.hackthissite.org/missions/realistic/4/products.php?category=1 union all select 1,2,*,4 from email
可以看见出现下图的情况:
在这里插入图片描述
可以看到已经获得了邮箱地址
接下来需要将这些邮箱地址发送给SaveTheWhales
http://www.hackthissite.org/missions/realistic/4/页面可以看见一个提交邮箱数据的输入框
尝试将邮箱号通过它发送给SaveTheWhales
但是问题在于:这里就只有一个输入窗口,要怎样发送呢?
所以,在这个页面发送邮箱号是不可行的
正确做法是,回到Hack This Site的主页面,找到自己的名字并点击,来到如下图页面:
在这里插入图片描述
再次点击自己的名字,将SaveTheWhales和邮箱号输入进去然后提交
在这里插入图片描述
提交后看到如下的提示,通关成功!
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值