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

1.16学习

crypto

buuctf-变异凯撒

下载附件后得到的是这个信息,先将其密文的前四位换成flag来找出规律得知其规律为变化量从5依次加1的递增,依次解出从而得到了flag。

misc

buuctf-基础破解

用ARCHPR强制破解,由于提示,可以知道这个压缩包的密码为四位数字,所以密码的暴力范围选择所有数字,开始于0000,结束于9999,随后成功破解出密码为2563而后输入密码解压缩,得到了flag.txt的内容能够识别出这个内容为base64内容,进行base64解码得到flag

re

nssctf-[LitCTF 2023]ez_XOR

下载附件,用ida打开查看代码,找到main,看到了一个字符串复制给了str2

int __cdecl main(int argc, const char **argv, const char **envp)
{
  int v4; // [esp+0h] [ebp-80h]
  const char **v5; // [esp+4h] [ebp-7Ch]
  const char **v6; // [esp+8h] [ebp-78h]
  char Str1[50]; // [esp+1Ch] [ebp-64h] BYREF
  char Str2[26]; // [esp+4Eh] [ebp-32h] BYREF
  __int16 v9; // [esp+68h] [ebp-18h]
  int v10; // [esp+6Ah] [ebp-16h]
  int v11; // [esp+6Eh] [ebp-12h]
  int v12; // [esp+72h] [ebp-Eh]
  int v13; // [esp+76h] [ebp-Ah]
  int v14; // [esp+7Ah] [ebp-6h]
  __int16 v15; // [esp+7Eh] [ebp-2h]

  __main();
  strcpy(Str2, "E`}J]OrQF[V8zV:hzpV}fVF[t");
  v9 = 0;
  v10 = 0;
  v11 = 0;
  v12 = 0;
  v13 = 0;
  v14 = 0;
  v15 = 0;
  printf("Enter The Right FLAG:");
  scanf("%s", Str1);
  XOR(Str1, 3);
  if ( !strcmp(Str1, Str2) )
  {
    printf("U Saved IT!\n");
    return 0;
  }
  else
  {
    printf("Wrong!Try again!\n");
    return main(v4, v5, v6);
  }
}

然后识别用户输入的字符串给str1,而后对str1进行XOR的计算,再对str1与str2进行比较,相等就输出save。所以对str2进行简单的xor运算也可找出flag

web

ctfhub-Git泄露-Log

开启环境后,先kali用dirsearch扫描靶场发现有git泄露,,得到如下诸多信息可以尝试,我们再去搜索一下git常见命令在那一堆信息中首先考虑该表中的命令,查看后寻找有用信息

pwn

buu-ciscn_2019_n_1

虚拟机checksec查看一下有没有保护机制,没有64位,ida64打开

打开后查看main函数 注意到func()函数,查看查看到了system()函数,但也看到了gets()这个危险函数,可能存在栈溢出,

    程序解释:
    程序打印“Let’s guess the number.”
    程序读取输入,存到v1变量
    程序判断v2的值是否为11.28125,是的话就执行system(“cat /flag”)
    剩下的略过

   可以发现v2并没有要求输入,但是v1可以输入任意数量的字符,由于v1v2处于同一个栈,将v1输入一定数量的字符导致其溢出v1的位置,溢出值覆盖v2的值,使v2=11.28125即可得到flag

当v2=11.28125时,调用system函数,进行cat flag,偏移量=0x30-0x4

db 8 dup(?)
db:定义字节类型变量的伪指令
dup():重复定义圆括号中指定的初值,次数由前面的数值决定
?:只分配存储空间,不指定初值

p打包函数是将整数打包为相对应位数的地址表示方式,eg.  p64

思路:接受完”Let’s guess the number.”这一字符串,程序就发送44个a,(由于p64()函数中填入浮点数会报错)再发送11.28125的十六进制形式

ucomiss 浮点比较指令

ucomiss进行单精度浮点数比较cs:dword_4007F4和xmm0的值,cs:dword_4007F4就是11.28125的位置
双击dword_4007F40x41348000即为11.28125的十六进制值

写exp

from pwn import*
r=remote('node5.buuoj.cn',28446)
payload=b'a'*(0x30-0x04)+p64(0x41348000)
r.sendline(payload)
r.interactive()

相关文章:

  • 前端面试场景题 1 (批量处理toast、减少if-else)
  • DeepSeek和ChatGPT的全面对比
  • ESP32 在IDF_V5.3.1版本下实现AP无线热点模式!(带WIFI事件处理)
  • 剑指 Offer II 025. 链表中的两数相加
  • #渗透测试#批量漏洞挖掘#某华-APPGetUser SQL注入漏洞
  • MySQL锁
  • UE5.3 C++ USTRUCT 的再次理解
  • 143.WEB渗透测试-信息收集-小程序、app(14)
  • verilog基础知识
  • 什么是网关,网关的作用是什么?网络安全零基础入门到精通实战教程!
  • Deepseek API接入pycharm实现辅助编程教程
  • 2月19号
  • 【架构思维基础:如何科学定义问题】
  • 模型量化初始知识
  • (leetcode42 前缀后缀最值)接雨水
  • 【HeadFirst系列之HeadFirst设计模式】第5天之工厂模式:比萨店的秘密武器,轻松搞定对象创建!
  • C++(23):lambda可以省略()
  • 深度学习-122-大语言模型LLM之基于langchian自定义国内联网查询工具并创建智能代理
  • rust笔记5-derive属性2
  • VSCode 中 Git 添加了多个远端,如何设置默认远端
  • 中国乒协坚决抵制恶意造谣,刘国梁21日将前往多哈参加国际乒联会议
  • 2025财政观察|长三角“三公”经费普降,钱要用在刀刃上
  • 第1现场 | 美国称将取消制裁,对叙利亚意味着什么
  • 陕西河南山西等地将现“干热风”灾害,小麦产区如何防范?
  • 第二期人工智能能力建设研讨班在京开班,近40国和区域组织代表参加
  • 第12届警博会在即:一批便民利企装备亮相,规模创历史新高