当前位置: 首页 > article >正文

1.15学习

web

ctfhub-网站源码

打开环境,查看源代码无任何作用,但是其提醒就在表面暗示我们用dirsearch进行目录扫描,登录kali的root端,利用终端输入dirsearch -u 网址的命令扫描该网址目录,扫描成功后获得信息,在信息的末尾有一个与周边不同的颜色出现那么我们在环境的网址后输入/www.zip就自动下载了一个附件解压后得到了一个flag文件,在原环境中访问该文件

ctfhub-bak文件

同上题一样,均是查看web文件目录,开启环境后,看到了一个信息“flag in index.php”,那么首先用dirsearch扫描,然后搜索在环境中看到的重要信息,“index.php”

 获得了flag所在web目录,访问即可得到文件,打开后看到一个flag

ctfhub-vim缓存

如题,缓存留在服务器上,那么我们同样dirsearch它在网页中我们同样发现了一个重要信息,扫描后顺利找到了index.php在网址输入"/.index.php.swp"得到一个文件,文本打开即可看到flag

ctfhub-.DS_Store

我们用dirsearch扫描,得到了结果输入后自动下载文件,文本打开后看到了flag here将这一部分复制访问环境,注意删除空格、$、以及后面的noteustr(这是妨碍我们解题的)便在网页出现了flag

re

nssctf-[SWPUCTF 2021 新生赛]简简单单的解密

下载附件后查看代码

import base64,urllib.parse
key = "HereIsFlagggg"
flag = "xxxxxxxxxxxxxxxxxxx"

s_box = list(range(256))
j = 0
for i in range(256):
    j = (j + s_box[i] + ord(key[i % len(key)])) % 256
    s_box[i], s_box[j] = s_box[j], s_box[i]
res = []
i = j = 0
for s in flag:
    i = (i + 1) % 256
    j = (j + s_box[i]) % 256
    s_box[i], s_box[j] = s_box[j], s_box[i]
    t = (s_box[i] + s_box[j]) % 256
    k = s_box[t]
    res.append(chr(ord(s) ^ k))
cipher = "".join(res)
crypt = (str(base64.b64encode(cipher.encode('utf-8')), 'utf-8'))
enc = str(base64.b64decode(crypt),'utf-8')
enc = urllib.parse.quote(enc)
print(enc)
# enc = %C2%A6n%C2%87Y%1Ag%3F%C2%A01.%C2%9C%C3%B7%C3%8A%02%C3%80%C2%92W%C3%8C%C3%BA

 前面的代码告诉我们这是一个RCE4加密

RC4 算法非常简单:用从1~256个字节的可变长度密钥初始化一个256字节的状态矢量S,S的元素记为S[0],s[1],…,S[255],从始至终置换后的S包含从0~255的所有8比特数。对于加密和解密中应用的密钥流的产生,密钥流中的每个密钥k是由S中255 个元素按一定的方式选出一个元素而生成 每生成一个密钥k,S中的元素就被重新置换一次。
总的来说就是虽然每一次的s盒都不一样,但是rc4为对称加密,加解密过程可逆,因此解密直接按原程序跑就可以(因为由流程可以看出只有最后一步异或操作是对字符串的加密,前面的操作均为对s盒的更改运算,而且最后一步异或也可逆)

但是我们更应该关心的一个是 enc如何产生的,大致就是flag经历了一系列加密(两个循环)后,转化为一个字符串,且为cipher变量,然后cipher变量又进行base64编码然后转为utf-8字符串,然后再用base64解码再换为url编码,所以base64的编解码直接对最终的enc无作用,

为了逆写程序,我们只需先将key,enc输入,然后对enc进行url解码即可,而rce4加密过程照搬

import urllib.parse
key='HereIsFlagggg'
enc='%C2%A6n%C2%87Y%1Ag%3F%C2%A01.%C2%9C%C3%B7%C3%8A%02%C3%80%C2%92W%C3%8C%C3%BA'
crypt=urllib.parse.unquote(enc)
flag=''
s_box=list(range(256))
j=0
for i in range(256):
    j = (j + s_box[i] + ord(key[i % len(key)])) % 256
    s_box[i], s_box[j] = s_box[j], s_box[i]
res = []
i = j = 0
for s in crypt:
    i = (i + 1) % 256
    j = (j + s_box[i]) % 256
    s_box[i], s_box[j] = s_box[j], s_box[i]
    t = (s_box[i] + s_box[j]) % 256
    k = s_box[t]
    flag+=chr(ord(s)^k)
print(flag)

#NSSCTF{REAL_EZ_RC4}

 misc

buuctf-N种方法解决

下载附件后是一个exe文件,但是不可运行用010打开,发现是一个base64编码的图片,将base64编码转为图片后得到了一个二维码,解码即可

crypto

buuctf-password

下载附件后打开看到的是,没有任何编码或者算法,试着数了数key{}中的x有多少个,10个,和zs19900315的个数等,试试,正确了


http://www.kler.cn/a/504659.html

相关文章:

  • 【WEB】网络传输中的信息安全 - 加密、签名、数字证书与HTTPS
  • 【Axure视频教程】中继器表格——拖动排序
  • 机器学习头歌(第三部分-强化学习)
  • 机组存储系统
  • Grails应用http.server.requests指标数据采集问题排查及解决
  • Microsoft
  • elementUI项目中,只弹一个【token过期提示】信息框的处理
  • Vue中nextTick实现原理
  • 鸿蒙心路旅程:HarmonyOS NEXT 心路旅程:技术、成长与未来
  • 探索文本相似性算法:解锁文本比对的奥秘
  • 数据结构-ArrayLIst-一起探索顺序表的底层实现
  • 二手车交易系统的设计与实现(代码+数据库+LW)
  • 抖音ip属地没有手机卡会显示吗
  • sql Server服务区cpu占用率高,原因分析
  • 【基于轻量型架构的WEB开发】课程 实验一 mybatis操作 Java EE企业级应用开发教程 Spring+SpringMVC+MyBatis
  • Java爬虫——使用Spark进行数据清晰
  • UnityDots学习(二)
  • Vue computed属性原理及其惰性求值特点
  • ros2-6.4.4 两轮差速控制机器人(问题解决)
  • 集成学习算法
  • RabbitMQ确保消息可靠性
  • LSTM火灾温度预测(Pytorch版本)
  • 【JavaScript】基础内容,HTML如何引用JavaScript, JS 常用的数据类型
  • Ubuntu创建AndroidStudio快捷启动图标
  • HTML拖拽功能(纯html5+JS实现)
  • 极限竞速 地平线5“d3dx12_43.dll”文件丢失或错误导致游戏运行异常如何解决?windows系统DLL文件修复方法