当前位置: 首页 > news >正文

渗透之sql注入----二次注入

目录

二次注入的原理:

实战:

第一步:找注入点

找漏洞:

注入大概过程:

第二步:开始注入


二次注入的原理:

        二次注入是由于对用户输入的数据过滤不严谨,导致存在异常的数据被出入数据库中;当我们从数据库中二次使用该数据时就会产生注入行为。

        二次注入也是较为常见的注入方式。

实战:

我们在sql靶场进行操作,本次的实战是sql靶场的第二十四关:

第一步:找注入点

我们通过查看源码可知,此关卡共有一下几个php页面。

经过大致的解读代码,这几个页面中可能存在注入点的php页面为pass_change.php,login.php,login_create.php三个页面。这三个页面的功能分别为修改密码,登录,创建新用户。

找漏洞:

我们观察这三个页面的php关键代码:

login.php:

login_create.php:

pass_change.php:

我们发现在我们输入的关键字段都被函数:mysql_real_escape_string()过滤了。这个函数的意思是对用户输入的敏感字符进行转义(在关键字符上连接一个反斜线进行转义),我们去php官网查看:

缺陷:该函数虽然可以对用户输入的进行过滤,但是在写入数据库中时并不会将其一并代入数据库。那么我们就可以从此点入手。

列子:我们注册一个用户,用户名为admin'#

去数据库中查看:发现特殊字符一并存入了数据库。

我们继续观察,发现在pass_change.php中的sql语句中会使用用户名来筛选并修改密码,但是该用户名是直接从数据库中取出的,并没有使用mysql_real_escape_string()函数进行过滤,那么我们就可以发现本次的注入点就在这里。

注入大概过程:

我们可以找到一个用户的用户名,但是我们并不知道它的密码。之后进入注册页面注册新的用户名,在进入密码修改界面修改密码。这就是本次注入的大概流程。

第二步:开始注入

1):假设我们已经知道了一个用户,叫做secure

2):进入注册页面:

注册一个用户名叫:secure'#    的用户

3):我们使用自己注册的用户登录,进入密码修改界面:

修改新密码为:aaaaaa

pass_change.php代码分析:

本次执行的sql代码为:

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

这里的用户名为本次登录的用户名,并且直接从数据库中读取,没有进行过滤,当前的用户名为:

secure。

实际执行的代码为:如下

通过sql语句可以看到,我们实际上修改的为secure用户的密码。

4):使用我们修改的密码aaaaaa,来进行登录secure用户。

成功的登入了secure用户。

5):说明我们成功的使用sql注入,利用漏洞拿到了secure用户的密码,本次实验圆满成功。本次实验就是典型的二次注入。

http://www.lryc.cn/news/345705.html

相关文章:

  • LeetCode 每日一题 ---- 【2105. 给植物浇水 II】
  • 【刷题】代码随想录算法训练营第三十五天|435、无重叠区间,763、划分字母区间 ,56、合并区间
  • 【JVM】了解JVM规范中的虚拟机结构
  • 西藏在线教育系统哪家好,培训机构为什么讲师流动大?该如何留住讲师?
  • 智能文档提取
  • 封装Springboot基础框架功能-03
  • 汽车EDI:IAC Elmdon EDI 对接指南
  • IPFoxy:什么是静态住宅IP?静态ISP代理指南
  • 【算法】高精度(string实现)
  • 宝塔面板如何删除一个站点
  • Android RecyclerView
  • 【QT教程】QT6命令行工具开发 QT命令行
  • 基于Springboot的微乐校园管理系统(有报告)。Javaee项目,springboot项目。
  • 【第6节课笔记】LagentAgentLego
  • 【ARMv8/v9 系统寄存器 4 -- ARMv8 通用寄存器详细介绍】
  • 一个月速刷leetcodeHOT100 day 01
  • Cargo - 构建 rust项目、管理依赖包
  • 内网安全-代理Socks协议路由不出网后渗透通讯CS-MSF控制上线简单总结
  • NSSCTF | [SWPUCTF 2021 新生赛]jicao
  • Redis 支持的 Java 客户端都有哪些?
  • 【JavaEE 初阶(四)】多线程进阶
  • ZOC8 for Mac v8.08.1激活版:卓越性能的SSH客户端
  • 指针(4)有点难
  • 初步了解json文件
  • 赶紧收藏!2024 年最常见 100道 Java 基础面试题(四十)
  • 初步了解Kubernetes
  • 前端工程化的基本介绍
  • linux上Redis安装使用
  • prometheus+grafana的安装与部署及优点
  • JWK和JWT 学习