一个sql server 2000的注入点
猜测语句如下:
insert into t1(col1, col2, col3) values('注入点1','数据点2','xxx');
注入点1的值可以通过opt1参数传入. 但是后端好像以逗号进行分割, 也就是传入demo','') 实际到sql执行时就只有demo'
数据点2的值可以通过opt2参数传入. 这个不是可注入的点, 它进行了过滤. 测试得到如下
' 单引号被替换成空格
" 双引号被替换成"
& 被替换成&
+ 被替换成空格
,、)、-- 不变
这种情况下求助各路大佬还有救吗?
我测试发现注入点1传入 demo'+@@version+1+'还是可以报错得出数据库版本, 数据库名称和用户等一些信息
demo'+(select @@version)+1+' 则提示"上下文中不允许使用子查询。只允许使用标量表达式" 这个好像是sql server 2000不支持这种查询方法
然后最后提一下. 就是上面给出的猜测语句是我简化过得, 应该不了解sql server. 实际通过报道提示拼出来的语句可能如下
insert into t1(col1, col2, col3) values('注入点1', N'COL2 [数据点2]','xxx');
有懂的大佬求问下这个 N'COL2 [数据点2]' 在sqlserver中是什么意思
举报
80uncle 发表于 2018-7-9 14:36:05 | 只看该作者
注入点1传入 demo',1,1)--- 看返回什么
如过返回正常说明可以注入
接下来
demo',(select @@version),1)---
评分 举报
阿布1994 发表于 2018-7-10 16:50:18 | 只看该作者
这waf这么变态放弃吧
评分 举报
′雨。 发表于 2018-7-10 20:05:33 | 只看该作者
opt1 '/*
opt2 */,xxx,xxx
评分 举报
楼主 evilhat 发表于 2018-7-10 20:28:44 | 只看该作者
80uncle 发表于 2018-7-9 14:36
注入点1传入 demo',1,1)--- 看返回什么
如过返回正常说明可以注入
返回'COL2'附近的语法不正确. 在这里逗号用不了的, 后端把逗号后的去掉了
评分 举报
楼主 evilhat 发表于 2018-7-10 20:31:57 | 只看该作者
′雨。 发表于 2018-7-10 20:05
opt1 '/*
opt2 */,xxx,xxx
提示: 上下文中不允许使用'xxx'。此处只允许使用常量、表达式或变量。不允许使用列名
评分 举报
楼主 evilhat 发表于 2018-7-10 20:32:50 | 只看该作者
阿布1994 发表于 2018-7-10 16:50
这waf这么变态放弃吧
所以才来求教各位大佬还有药救不
评分 举报
′雨。 发表于 2018-7-11 19:19:34 | 只看该作者
evilhat 发表于 2018-7-10 20:31
提示: 上下文中不允许使用'xxx'。此处只允许使用常量、表达式或变量。不允许使用列名
你自己在xxx这注入不就行了。。
都没限制了。
评分 举报
′雨。 发表于 2018-7-11 19:19:34 | 只看该作者
evilhat 发表于 2018-7-10 20:31
提示: 上下文中不允许使用'xxx'。此处只允许使用常量、表达式或变量。不允许使用列名
你自己在xxx这注入不就行了。。
都没限制了。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章