注入点Fields:
注册页面会引用如下方法:
$fields 变量是从 $fields=$_POST['fields']; 这里获取, 在代码里没有过滤。
打印 fields 数据查看:
从代码上看
$field_sql.=",`{$k}`='{$f_value}'";
最终会变成:
,`truename`='111111',`email`='12345'
因为 $field_sql 最终会引入 一个 update语句:
可以打印一下看看:
最后在 truename或email位置报错注入即可:
注入点username:
关于用户名位置, 代码用了下面的函数过滤:
再看看 safe_html函数:
正则匹配到关键字后直接运行 showmsg函数:
看样子这个函数只是正则匹配后提示信息的作用, 并未能过滤注入: