码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • ctfshow 萌新赛 给她


    初识: 一开始看到这个题目以为是sql注入,尝试了各种sql注入转义次都注入不了

    .git泄露:最后还是看了一下大佬的解题,发现方向就错了,“给她”——“git”,这题的入口是.git泄露。

    我是纯小白,看到这又去了解了一次啊.git泄露,有个大佬写得非常详细

    https://blog.csdn.net/qq_45521281/article/details/105767428

    GitHack下载地址:https://github.com/lijiejie/GitHack

    使用: 找到下载目录输入 python GitHack.py https://xxxxxxxxxxxxx/.git/

    python2 GitHack.py https://xxxxxxxxxxxxx/.git/为ctfshow给她 赛题的url

    打开hint.php

     sprintf漏洞

     https://blog.csdn.net/WQ_BCJ/article/details/85057447

    https://blog.csdn.net/alex_bean/article/details/102721959

    通过底层实现代码可以发现,sprintf()方法就是对15种类型做了匹配,15种类型以外的就直接break了没有做任何处理,所以就会导致一个问题:

    如果我们输入"%\"或者"%1$\",他会把反斜杠当做格式化字符的类型,然而找不到匹配的项那么"%\","%1$\"就因为没有经过任何处理而被替换为空。如果%1$ + 非arg格式类型,程序会无法识别占位符类型,变为空

    因此sprintf注入的原理就是用一个15种类型之外的"\" 来代替格式字符类型让函数替换为空,则“%1$\'”后面的单引号就能闭合前面的单引号。

    此外,还要注意函数addslashes()作用是返回在预定义字符之前添加反斜杠的字符串。预定义字符是单引号(')双引号(")反斜杠(\)NULL。比如下图,这样就造成了得结果是我们无法在注入的过程当中使用单引号(’)

     

    举一个例子

    1. //addslashes()函数:在预定义前面加反斜杠,预定义符有单引号('),双引号("),反斜杠(\),NULL
    2. $input = addslashes ("%1$' or 1=1#" );
    3. $b = sprintf ("AND b='%s'", $input );
    4. echo $b;
    5. echo '
      '
      ;
    6. $sql = sprintf ("SELECT * FROM t WHERE a='%s' $b ", 'admin' );
    7. //对$input与$b进行了拼接
    8. //$sql = sprintf ("SELECT * FROM t WHERE a='%s' AND b='%1$\' and 1=1#' ", 'admin' );
    9. //很明显,这个句子里面的\是由addsashes为了转义单引号而加上的,使用%s与%1$\类匹配admin,那么admin只会出现在%s里,%1$\为空
    10. echo $sql ;
    11. ?>

     输出:

    那么这里要构造%1$ + 非arg格式类型,1是因为%数量大于arg数量

    ?name='admin'&pass=123%1$' or 1=1--+

    addslashes()将'转义成\' 则passpass=123%1$\'

    最后$sql为

    select * from user where name='admin' and pass='123' or 1=1--+'

     来到了这个页面

     查看源码

    flag就在这个页面

    抓个包

    cookie中发现奇怪的地方,解码看看

     

     尝试用php伪协议

    没有显示

     

     使file=/flag

     得到flag

    ctfshow{4ef5edb8-d547-4400-9759-9027180b531f}

     萌新赛真难!!!

     

     

  • 相关阅读:
    jenkins 中文乱码及执行报错
    金九银十?铜九铁十才对......
    微信小程序开发之后台数据交互及wxs应用
    Elasticsearch学习-- 聚合查询
    【云原生之k8s】K8s 管理工具 kubectl 详解(二)
    JAVA的File对象
    STM32f103 SMO滑膜观测器的FOC驱动DIY
    将PyCharm中的终端运行前面的PS修改成当前环境
    python父类子类的继承和覆写的区别以及通过代码进行讲解
    Java基于springboot +vue网上超市购物网站 多商家
  • 原文地址:https://blog.csdn.net/qq_39980334/article/details/127850512
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号