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()
相关推荐
Chef_Chen4 小时前
从0开始学习R语言--Day18--分类变量关联性检验
学习
键盘敲没电4 小时前
【IOS】GCD学习
学习·ios·objective-c·xcode
海的诗篇_5 小时前
前端开发面试题总结-JavaScript篇(一)
开发语言·前端·javascript·学习·面试
AgilityBaby5 小时前
UE5 2D角色PaperZD插件动画状态机学习笔记
笔记·学习·ue5
AgilityBaby5 小时前
UE5 创建2D角色帧动画学习笔记
笔记·学习·ue5
武昌库里写JAVA6 小时前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
一弓虽7 小时前
git 学习
git·学习
Moonnnn.9 小时前
【单片机期末】串行口循环缓冲区发送
笔记·单片机·嵌入式硬件·学习
viperrrrrrrrrr710 小时前
大数据学习(131)-Hive数据分析函数总结
大数据·hive·学习
fen_fen10 小时前
学习笔记(26):线性代数-张量的降维求和,简单示例
笔记·学习·算法