第一次成功复现一个简单漏洞,于是写下这篇随笔记录一下

首先我们来看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">&nbsp<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注入漏洞的简单复现的更多相关文章

  1. [CVE-2014-3704]Drupal 7.31 SQL注入漏洞分析与复现

    记录下自己的复现思路 漏洞影响: Drupal 7.31 Drupal是一个开源内容管理平台,为数百万个网站和应用程序提供支持. 0x01漏洞复现 复现环境: 1) Apache2.4 2) Php ...

  2. mybatis的sql中使用$会出现sql注入示例

    mybatis的sql中使用$会出现sql注入示例: 模拟简单登录场景: 页面代码: function login(){ //sql注入 var user = { username : "' ...

  3. 关于ECSHOP中sql注入漏洞修复

    标签:ecshop sql注入漏洞修复 公司部署了一个ecshop网站用于做网上商城使用,部署在阿里云服务器上,第二天收到阿里云控制台发来的告警信息,发现ecshop网站目录下文件sql注入漏洞以及程 ...

  4. sqlmap查找SQL注入漏洞入门

    1.安装sqlmap sqlmap是一款非常强大的开源sql自动化注入工具,可以用来检测和利用sql注入漏洞.注意:sqlmap只是用来检测和利用sql注入点的,使用前请先使用扫描工具扫出sql注入点 ...

  5. 手工检测SQL注入漏洞

    SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,具体来说,它是利用现有应用程序将(恶意的)SQL命令注入到后台数据库引擎执 ...

  6. SQL注入漏洞总结

    目录: 一.SQL注入漏洞介绍 二.修复建议 三.通用姿势 四.具体实例 五.各种绕过 一.SQL注入漏洞介绍: SQL注入攻击包括通过输入数据从客户端插入或“注入”SQL查询到应用程序.一个成功的S ...

  7. SQL注入漏洞知识总结

    目录: 一.SQL注入漏洞介绍 二.修复建议 三.通用姿势 四.具体实例 五.各种绕过 一.SQL注入漏洞介绍: SQL注入攻击包括通过输入数据从客户端插入或“注入”SQL查询到应用程序.一个成功的S ...

  8. 从c#角度看万能密码SQL注入漏洞

    以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...

  9. WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案(转)

    对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...

随机推荐

  1. [蓝桥杯]PREV-13.历届试题_网络寻路

    题目描述: 代码如下: #include <stdio.h> #include <stdlib.h> #include <string.h> #define LEN ...

  2. Intel_AV-ICE06加速卡+QAT_Engine测试

    Intel AV-ICE06加速卡测试报告 Intel RSA加速卡结合Intel其QAT_Engine测试性能的提升,其支持的异步模式对性能的提升很大. 注意QAT_Engine只支持openssl ...

  3. 【剑指Offer】只出现一次的字符

    题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...

  4. http/https协议

    HTTP 1. 概念 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览 ...

  5. 基于墨刀实现的购物app

    在观察研究购物app后 仔细分析总结了几个基础功能,实现如下的界面: 主界面:购物app的推荐界面,提供各式的样品,将整个app的多种功能进行展示. 推荐分类:根据用户浏览的宝贝,对用户进行合理推荐. ...

  6. [纯C#实现]基于BP神经网络的中文手写识别算法

    效果展示 这不是OCR,有些人可能会觉得这东西会和OCR一样,直接进行整个字的识别就行,然而并不是. OCR是2维像素矩阵的像素数据.而手写识别不一样,手写可以把用户写字的笔画时间顺序,抽象成一个维度 ...

  7. GC的过程

    哪些内存需要GC 判断对象是否还存活 引用计数法 给对象中添加一个引用计数器,每当一个地方引用它时,计数器值就加1:当引用失效时,计数器的值就减1,任何时候计数器为0的对象就是不可能再被使用的. 微软 ...

  8. 01 HTML快速入门

    HTML CSS JS (网络三剑客) 上网就是下载网页 浏览器 就是一个解释器 CS模式--------client serverbs模式--------browser server HTML是什么 ...

  9. makefile中打印变量名字,方便调试

    $(warning $(DVD_SERVICE)) // DVD_SerVICE是Makefile中的变量 $(warning   ST40_IMPORTS is $(ST40_IMPORTS)) 变 ...

  10. a 标签实现分享功能

    在网页中,经常会用到分享功能,例如分享到qq,分享到微信,分享到微博等,但是怎么实现呢?一直没有想清楚这个问题,觉得好高大上的样子,于是在网上找了一些资料,也没有看出个什么所以然来: 于是有些心急了, ...