DVWA中low级的sql注入漏洞的简单复现
第一次成功复现一个简单漏洞,于是写下这篇随笔记录一下
首先我们来看dvwa中low级的sql注入的源码
源码文件路径如下图:

源码如下:
<?php
if(isset($_GET['Submit'])){
// Retrieve data
$id = $_GET['id'];
$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";
$result = mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' );
$num = mysql_numrows($result);
$i = 0;
while ($i < $num) {
$first = mysql_result($result,$i,"first_name");
$last = mysql_result($result,$i,"last_name");
$html .= '<pre>';
$html .= 'ID: ' . $id . '<br>名字: ' . $first . '<br>姓氏: ' . $last;
$html .= '</pre>';
$i++;
}
}
?>
简单分析一下源码,
当php确认用户提交表单后开始执行,接受id参数给$id,未经任何过滤直接用sql语句查询数据库,最后将查询后的结果集中的数据打印出来
接下来为了复现漏洞,用phpMyAdmin创建一个新数据库
创建了一个test的数据库,库里创建了users表,表中随便写了一些数据如下:

然后写一个可以查询数据库内容的网页,开始复现漏洞
代码如下:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
</head>
<body>
<form action="" method="GET">
<p>id:<br/><input type="text" name="id"> <input type="submit" name='submit' value="submit"/>
</p>
</form>
<?php error_reporting(E_ALL&~E_NOTICE); // 连接数据库和test表
$con=mysql_connect("localhost","root","root");
if (!$con){
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db("test", $con); if(isset($_GET['submit'])){ //判断表单是否提交
$id=$_GET['id']; //接受表单中id的参数赋给$id
$sql="SELECT user_name FROM users WHERE user_id='$id'"; //sql查询语句 //执行查询语句并将结果集赋给$result
$result=mysql_query($sql) or die('<pre>' . mysql_error() . '</pre>' ); $num = mysql_numrows($result);
$i = 0;
while ($i < $num) { //提取$result的结果集中的user_name的数据并将其赋给$name
$name = mysql_result($result,$i,"user_name"); // 将$id和$name的值拼接在变量$html上最后打印出来
$html .= '<pre>';
$html .= 'ID: ' . $id . '<br>名字: ' . $name;
$html .= '</pre>';
$i++;
}
echo $html;
} ?>
</body>
</html>
测试


先试试正常的输入,显示出与用户ID相应的用户名

接着试试 万能密码 ,显示出了所有用户名
接着就是查看数据库及其管理员账号


接着是一系列sql注入

爆数据库名

爆列名(这里好像把dvwa数据库的users表里的内容也爆出来了……)

爆user_pwd里的内容
总结
复现漏洞的过程中,能逐渐理解、明白漏洞的原理,清楚代码的构造,收获很大。
DVWA中low级的sql注入漏洞的简单复现的更多相关文章
- [CVE-2014-3704]Drupal 7.31 SQL注入漏洞分析与复现
记录下自己的复现思路 漏洞影响: Drupal 7.31 Drupal是一个开源内容管理平台,为数百万个网站和应用程序提供支持. 0x01漏洞复现 复现环境: 1) Apache2.4 2) Php ...
- mybatis的sql中使用$会出现sql注入示例
mybatis的sql中使用$会出现sql注入示例: 模拟简单登录场景: 页面代码: function login(){ //sql注入 var user = { username : "' ...
- 关于ECSHOP中sql注入漏洞修复
标签:ecshop sql注入漏洞修复 公司部署了一个ecshop网站用于做网上商城使用,部署在阿里云服务器上,第二天收到阿里云控制台发来的告警信息,发现ecshop网站目录下文件sql注入漏洞以及程 ...
- sqlmap查找SQL注入漏洞入门
1.安装sqlmap sqlmap是一款非常强大的开源sql自动化注入工具,可以用来检测和利用sql注入漏洞.注意:sqlmap只是用来检测和利用sql注入点的,使用前请先使用扫描工具扫出sql注入点 ...
- 手工检测SQL注入漏洞
SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,具体来说,它是利用现有应用程序将(恶意的)SQL命令注入到后台数据库引擎执 ...
- SQL注入漏洞总结
目录: 一.SQL注入漏洞介绍 二.修复建议 三.通用姿势 四.具体实例 五.各种绕过 一.SQL注入漏洞介绍: SQL注入攻击包括通过输入数据从客户端插入或“注入”SQL查询到应用程序.一个成功的S ...
- SQL注入漏洞知识总结
目录: 一.SQL注入漏洞介绍 二.修复建议 三.通用姿势 四.具体实例 五.各种绕过 一.SQL注入漏洞介绍: SQL注入攻击包括通过输入数据从客户端插入或“注入”SQL查询到应用程序.一个成功的S ...
- 从c#角度看万能密码SQL注入漏洞
以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...
- WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案(转)
对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...
随机推荐
- RDLC报表系列--------报表分页显示标题
RDLC表格标题分页后,标题不显示网上的办法也不少.怎奈我试过很多,只有这个可以解决.留下代码以后使用 将报表以 XML的方式打开,搜索找到“详细信息” 在这个位置 报表分页标题设置<Tabli ...
- 服务器变更IP地址后SSH链接失败的解决办法
客户端未变,服务器端变更IP地址,导致客户端链接失败,这种情况提示如下: 原因是服务器端更改IP地址后,秘钥也需更新 在客户端输入以下格式的命令: ssh-keygen-f"/home/用户 ...
- 前端-JavaScript2-1——JavaScript基础复习及上次作业答案
昨天讲解的JS是编程最最简单的一些基础知识,复习一下: JavaScript书写环境,<script>标签 1 <script type=”text/javascript”&g ...
- SfMLearner 记录
2019年3月2日09:29:54 正在看SfMLearner的pytorch源码,意识到无监督的深度估计最重要的是利用实体的一致性 来建立loss. 对于一个不移动的物体,相机从一个pose到另一个 ...
- mybatis关于ORM的使用以及设计(一)[ORM的初始化]
ORM WIKI中的解释.画重点 Object-relational mapping (ORM, O/RM, and O/R mapping tool) in computer science is ...
- 刘志梅2017710101152.《面向对象程序设计(java)》第十二周学习总结
实验十二 图形程序设计 实验时间 2018-11-14 1.理论知识 (1) 基本AWT库采用将处理用户界面元素的任务委派给每个目标平台的本地GUI工具箱的方式,由本地GUI工具箱负责用户界面元素的 ...
- 二叉搜索树(BST)学习笔记
BST调了一天,最后遍历参数错了,没药救了-- 本文所有代码均使用数组+结构体,不使用指针! 前言--BFS是啥 BST 二叉搜索树是基于二叉树的一种树,一种特殊的二叉树. 二叉搜索树要么是一颗空树, ...
- 请推荐一本SQL教程
sql系列教程如下 sql教程 SQL 是用于访问和处理数据库的标准的计算机语言. 在本教程中,您将学到如何使用 SQL 访问和处理数据系统中的数据, 这类数据库包括:mysql.SQL Server ...
- 简单封装Redis做缓存
基于Redis封装一个简单的Python缓存模块 0. Docker Redis安装 参考: Get Docker CE for CentOS Docker 安装 Redis 安装Docker时错误s ...
- Maintaining ICM Parameters for Using SSL for As JAVA
1770585 - How to configure SSL on the AS Java You can use this procedure to configure the necessary ...