1.16学习

crypto

buuctf-变异凯撒

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

misc

buuctf-基础破解

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

re

nssctf-LitCTF 2023ez_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 Str150; // esp+1Ch ebp-64h BYREF

char Str226; // 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()
相关推荐
05大叔20 分钟前
对话系统学习,问答型数据库,闲聊型对话数据库
学习
nashane20 分钟前
HarmonyOS 6商城开发学习:抢票倒计时与系统日历提醒——票务类场景的完整落地思路
学习·华为·harmonyos
伶俜661 小时前
零基础学 ArkUI 传感器(专题二):从加速度计到指南针,玩转硬件能力
学习·华为·harmonyos
进击的小头2 小时前
第8篇:IGBT 从零到精通:核心原理、关键参数、选型指南与工业级应用要点
经验分享·嵌入式硬件·学习
小陈phd2 小时前
Text2SQL智能体学习笔记(一)——NL2SQL及执行流程介绍
笔记·学习
风栖柳白杨2 小时前
【大模型学习】主流大模型统计
学习
lengxuemo2 小时前
ICC2学习之PG
学习
稷下元歌2 小时前
系统学习plc 基础指令上篇,官方资料课程笔记整 理
笔记·学习
我的xiaodoujiao2 小时前
API 接口自动化测试详细图文教程学习系列25--继续处理testCase中的数据
python·学习·测试工具·pytest