数据库-百分号,分号都被js屏蔽了,该如何进行sql注入攻击?

前端开发 前端开发 主题:1148 回复:2395

数据库-百分号,分号都被js屏蔽了,该如何进行sql注入攻击?

瑾兮 发布于 2017-08-29 字数 235 浏览 1224 回复 4

比如有一个sql查询 select title from News where name like '%+value+%'
value 表示用户从输入框输入的数据
但value在进行查询之前Javascript就对它做了预处理,例如去除出了%和‘。
在这样的情况下,该如何进行sql注入呢?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(4

泛泛之交 2017-10-08 4 楼

的确很多。比如:可以把网页的JS功能关掉。
可以利用类似firefox的debug功能,可以在线把JS代码改掉。JS函数 失败 return false,你把这个return false 改为return ture.

想挽留 2017-10-04 3 楼

如果只是js做了疲敝,还是很好绕过的:
查看源代码 将 form 部分 复制下来,将提交的地址补全,另存页面,直接打开提交就可以了。
如果是由js提交的,那么也把js复制下来,把验证数据的那部分去掉,同样运行即可。
如果网站有referer验证等,那么还可以有程序模拟post。方法很多。

这是比较理想的情况,如果网站后台也做了相应的过滤,那么就不好实现了,往往验证都是前台与后台对应的。

归属感 2017-10-04 2 楼

js是防不料sql注入的,只能在service端对POST或GET进行过滤,给你个service端过滤通用PHP代码:

//过滤所有输入
function args_addslashes(){
if (!get_magic_quotes_gpc()) {
str_addslashes($_GET);
str_addslashes($_POST);
str_addslashes($_COOKIE);
}
}
function str_addslashes(&$_value){
if (!empty($_value)){
if (is_array($_value)){
foreach($_value as $_key => $_val) {
str_addslashes($_value[$_key]);
}
} else {
$_value = addslashes($_value);
}
}
}

想挽留 2017-09-17 1 楼

仅仅只是对'%'和'‘'进行JS过滤,还是可以通过其他的方式注入的。
例如:
and 1=1 类似这样的很多测试语句都可以尝试读取你的表信息。

如果前台和后台都进行严格的字符过滤,那么注入确实不好实现。只能通过不断的反复尝试和猜测,如此循环的取找到注入点。