各种数据库SQL注入残章


很久没有出来做show了~首先深度鄙视一下BH09讲mysql注射的那个挫人!在中国这些算是科普的东西,居然还能拿去bh讲
现在天朝的工作者们哪个不会用into outfile导出shell哇!老外真是老外,不好好研究研究中华文化,感觉有点井底蛙.
superhei jx他们在N年前都已经把mysql注射研究透了啦!
你说CASI他们看不懂中文,那pangolin也有英文版的吧!也该拿去研究研究呗
而且支持不支持多语句不是语言上说了算的,主要是数据库本身是否解析,其次就是driver上面有没有做手脚
所以说那个图表 什么PHP+MYSQL nosupport , ASPX+MYSQL support不能真正说明问题
鄙视归鄙视~本人不牛!但我偶尔也想来install-B,以下这些东西我是在06年底07年头的时候已经私下收集出来的了!现在来说很过时哈!
仅凭残留的记忆写出来!以下这些基本上都是基于DB的SQL解析引擎而言的


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,根据以上思路后者可以自己去逐个逐个去测

你可能感兴趣的:(sql注入)