sql注入实验一 ——合天网安实验室学习笔记

实验链接

SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

链接:http://www.hetianlab.com/expc.do?ce=193d68b2-908c-4eb3-958a-9582ae19a1f9

实验简介

实验所属系列:Web应用安全

实验对象: 本科/专科信息安全专业

相关课程及专业:信息网络安全概论

实验类别:实践实验类

实验目的

  • 深入理解sql注入工作原理;

  • 怎么去绕过正则表达式实现注入

  • 培养学生的独立思考能力

预备知识

给出如下参考链接(你亦可自己到网上去找相关内容学习): http://www.2cto.com/Article/201208/151503.html

实验环境

浏览器/服务器环境;

服务器配置:apache+php+Mysql;

打开实验网址(http://10.1.1.11:81),可以看到实验练习系统。
在这里插入图片描述

实验步骤

步骤一

实例一:热身运动,不设防

关键代码:
在这里插入图片描述

本例任务:尝试进行sql注入,目标为得到数据库中的用户名与密码,并对你的sql注入测试语句及简单说明。

打开实例1:
在这里插入图片描述

根据上述关键代码可知由 ’ 进行识别,构造name:
在这里插入图片描述

查看结果,正确
在这里插入图片描述

若输入错误,则返回无:
在这里插入图片描述
用 union 语句判读列的个数

判断列数为一:
在这里插入图片描述

返回错误:
在这里插入图片描述
判断列数为两、三……,一直到返回正确为止:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
五列时返回正确,说明该数据库内有五列数据。

下面对各列数据类型进行判断
在这里插入图片描述
第一列为id,数据类型为字符串;
在这里插入图片描述
第二列为name,数据类型为字符串;

在这里插入图片描述
第三列为age,数据类型为字符串;

在这里插入图片描述在这里插入图片描述
第四、五列未知,但数据类型为字符串。

也可以使用 order by 判断列数:
在这里插入图片描述
在这里插入图片描述
列数大于等于1正确。

在这里插入图片描述
在这里插入图片描述
列数大于等于6错误。

列举数据库内所有用户名:
在这里插入图片描述
在这里插入图片描述
同样的方法列举数据库所有信息:
在这里插入图片描述

步骤二

实例二:节约是种美德,少用空格

关键代码:
在这里插入图片描述

本例任务:尝试进行sql注入,目标为得到数据库中的用户名与密码,并对你的sql注入测试语句及简单说明。

和实例一尝试相同操作:
在这里插入图片描述
在这里插入图片描述
返回错误。

由关键代码可知,对空格进行了筛选,因此我们输入的时候采用 %a0 替代空格,用 %23 (#)代替 --+ 进行注释:
在这里插入图片描述
在这里插入图片描述
接下来与实验一的步骤一致,在此不做演示。

最终结果相同:
在这里插入图片描述

步骤三

实例三:继承美德,不用空格

关键代码:
在这里插入图片描述

本例任务:尝试进行sql注入,目标为得到数据库中的用户名与密码,并对你的sql注入测试语句及简单说明。

%s是对空格、制表符、换行符的检测,我们可用%a0绕过:
在这里插入图片描述
也可使用/**/绕过(起空格效果):
在这里插入图片描述
在这里插入图片描述
成功!

答题

在这里插入图片描述
对于第二题,个人觉得B选项也没有问题。

总结 sql语句

  • 注释: # , --+ ,%23
  • 空格: “ ”,%a0 ,/**/
  • 查询列数:
    • order by n:大于等于n列
    • union select null,null, ……, null:等于n列( n 个 null )
  • 列举全部内容:
    • union select TABLE_SCHEMA , TABLE_SCHEMA , ……, TABLE_SCHEMA from information_schema.TABLES
    • n为列数
    • n 个 TABLE_SCHEMA
    • 不需要的内容可以将 TABLE_SCHEMA 换成 null
  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值