NoteDeep
mysql_real_escape_string和addslashes的区别
addslashes为通常令人不安的字符添加斜杠。 mysql_real_escape_string转义MySQL需要转义的任何东西。这可能是比addslashes处理的更多或更少的字符。

我相信你应该总是使用你的mysql提供的转义函数而不是addslashes,因为addslashes可能做太多或没有足够的工作来达到你使用它的目的。


sqlmap扫描sql注入


python sqlmap.py --flush-session -u "http://xxx.xxx.com/xxx/xxx?areaid=1" --dbms MySQL

对于mysql而言,只需要
处理查询时的where语句:
$v = addslashes($v); $cond .= "{$field} = '{$v}' ";

处理插入或更新时的data,
if (is_null($value)) { $exprs[] = "`{$field}`= NULL"; } else { $value = $this->conn->escapeString($value); // 这里是real_escape_string $exprs[] = "`{$field}`='{$value}'"; }

对于postgresql而言
pg_escape_string函数,比addslashes要好。
前者会把 ' 变成 ''
普通的转义,这样的语句防不住。
select areaid,name,lvl from admindb.tar_area where parent='1\';SELECT PG_SLEEP(5)--';
而且,我们发现,pgsql存数据的时候,会自动unescape一次。

评论列表

  • jianle
    jianle

    <script>alert(1);</script>  2019年1月9日 4:8

sqlmap扫描sql注入