INFORMIX 不支持多语句 可以在注射时用filetoclob等函数来操作本地文件
MYSQL 不支持多语句
ORACLE 不支持多语句 一般使用utl_http回调数据,还有好些方式,不一一列举,当然如果能直接操作SQL的话utl_http被禁,
直接用dblink之类的来回调数据也未尝不可.
DB2 不支持多语句 如果能直接操作SQL的话,用sqlj.install_jar可以直接远程安装后门包括回调数据
MSSQL 支持多语句 多语句形式: ; 空格 回车 /**/ 而且多个结果集默认返回第一个!
每个SQLkeyword之间还可以用非可见字符做分割来绕过某些IDS过滤器之类,
如,还有什么非可见字符自己去想,用%00(null) 可以把SQL截断,
用openrowset等可以回调数据,这些都是老话了!
POSTGRESQL 支持多语句 多语句形式: ; 多个结果集默认返回最后一个,自己可以构建SQLJ做socket等,类似我写的ORA SQLJSHELL
还可以调用函数读文件等等,自己去找手册
SYBASE 支持多语句 多语句形式: 空格 多个结果集默认返回第一个,可以用syb_sendmsg来回调数据
http://blog.csdn.net/kj021320/archive/2007/08/22/1753629.aspx这里有讲,如果对方的SYBASE是支持ASE_JAVA
同样可以用SQLJ实现shell
TERADATA 支持多语句 多语句形式: ; DML跟DDL不能同时执行
以上支持多语句的数据库 DDL跟DML同时执行还是会根据每个库有所差别的!
而且每个UNION ALL 的查询中前后的结果集合中类型转换也有所差别,
例如int是否可以转换为varchar boolean类型是否能够为null,根据以上思路后者可以自己去逐个逐个去测