东莞企业为什么网站建设,wordpress文章保存图片不显示图片,企业网站设计思路,公司的网络规划与设计misc
buu-后门查杀 下载附件#xff0c;我们用火绒安全扫一下然后点击详情进入该文件所在文件夹#xff0c;再用记事本打开该文件#xff0c;搜索flag无果#xff0c;再试试pass#xff08;由题目中的密码联系到pass#xff0c;password#xff0c;key等#xff09;我们用火绒安全扫一下然后点击详情进入该文件所在文件夹再用记事本打开该文件搜索flag无果再试试pass由题目中的密码联系到passpasswordkey等然后看到了一个将这个内容提交试试成功
crypto
buu-rsa2 打开文件看到e的值很大那么这是低解密指数找到模板求d因为在文件中有一个未定义的变量d
import gmpy2
def transform(x,y): #使用辗转相处将分数 x/y 转为连分数的形式res[]while y:res.append(x//y)x,yy,x%yreturn resdef continued_fraction(sub_res):numerator,denominator1,0for i in sub_res[::-1]: #从sublist的后面往前循环denominator,numeratornumerator,i*numeratordenominatorreturn denominator,numerator #得到渐进分数的分母和分子并返回#求解每个渐进分数
def sub_fraction(x,y):restransform(x,y)reslist(map(continued_fraction,(res[0:i] for i in range(1,len(res))))) #将连分数的结果逐一截取以求渐进分数return resdef get_pq(a,b,c): #由pq和pq的值通过维达定理来求解p和qpargmpy2.isqrt(b*b-4*a*c) #由上述可得开根号一定是整数因为有解x1,x2(-bpar)//(2*a),(-b-par)//(2*a)return x1,x2def wienerAttack(e,n):for (d,k) in sub_fraction(e,n): #用一个for循环来注意试探e/n的连续函数的渐进分数直到找到一个满足条件的渐进分数if k0: #可能会出现连分数的第一个为0的情况排除continueif (e*d-1)%k!0: #ed1 (mod φ(n)) 因此如果找到了d的话(ed-1)会整除φ(n),也就是存在k使得(e*d-1)//kφ(n)continuephi(e*d-1)//k #这个结果就是 φ(n)px,qyget_pq(1,n-phi1,n)if px*qyn:p,qabs(int(px)),abs(int(qy)) #可能会得到两个负数负负得正未尝不会出现dgmpy2.invert(e,(p-1)*(q-1)) #求ed1 (mod φ(n))的结果也就是e关于 φ(n)的乘法逆元dreturn dprint(该方法不适用)n 101991809777553253470276751399264740131157682329252673501792154507006158434432009141995367241962525705950046253400188884658262496534706438791515071885860897552736656899566915731297225817250639873643376310103992170646906557242832893914902053581087502512787303322747780420210884852166586717636559058152544979471
e 46731919563265721307105180410302518676676135509737992912625092976849075262192092549323082367518264378630543338219025744820916471913696072050291990620486581719410354385121760761374229374847695148230596005409978383369740305816082770283909611956355972181848077519920922059268376958811713365106925235218265173085dwienerAttack(e,n)
print(d,d)d8920758995414587152829426558580025657357328745839747693739591820283538307445求出d后直接加入原代码中发现有漏洞 所以不能直接加入需要优化在flag那一行的hex(d)改为hex(d).encode()
N 101991809777553253470276751399264740131157682329252673501792154507006158434432009141995367241962525705950046253400188884658262496534706438791515071885860897552736656899566915731297225817250639873643376310103992170646906557242832893914902053581087502512787303322747780420210884852166586717636559058152544979471
e 46731919563265721307105180410302518676676135509737992912625092976849075262192092549323082367518264378630543338219025744820916471913696072050291990620486581719410354385121760761374229374847695148230596005409978383369740305816082770283909611956355972181848077519920922059268376958811713365106925235218265173085
d8920758995414587152829426558580025657357328745839747693739591820283538307445
import hashlib
flag flag{ hashlib.md5(hex(d).encode()).hexdigest() }
print(flag) 运行后得到#flag{8159e6c4abdd3b94ce461ed9a1a24017}但是是错的看别人的wp需要用python2运行得到flag
buu-RSA2 下载附件得到题目可以看到是endpc
在网上找模板
import gmpy2 as gpe 65537
n 248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113
dp 905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657
c 140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751
for x in range(1, e):if(e*dp%x1):p(e*dp-1)//x1if(n%p!0):continueqn//pphin(p-1)*(q-1)dgp.invert(e, phin)mgp.powmod(c, d, n)if(len(hex(m)[2:])%21):continueprint(--------------)print(m)print(hex(m)[2:])print(bytes.fromhex(hex(m)[2:]))buu-[AFCTF2018]Morse
点击
附件如题是摩斯密码我们用在线工具解密摩斯密码转换器 - 孟坤工具箱网页版就这么简单的提交发现错误再仔细看看此时的明文是数字与字母字母不超f组成想到了hex的特征将这个明文转为字符得到了真正的flag字符串HEX转换
花指令
是什么
花指令实质就是一串垃圾指令主要用于干扰静态分析的难度防止反编译器进行反编译并不影响程序的正常逻辑在CTF中花指令的作用主要用于防止静态分析程序花指令也可以被用在病毒或木马上通过加入花指令来改变程序的特征码从而躲避杀软的扫描达到免杀的目的花指令一般被分为两类可执行花指令与不可执行花指令不管执不执行都不会影响程序正常运行。
re
nssctf-[GFCTF 2021]wordy【涉及花指令】
附件下载后查得无壳用ida打开然后没有在函数窗口并未看到main所以查看一下其他的。main函数实际上是被调用的通过查看start函数可以发现start函数调用了_libc_start_main函数_libc_start_main里面调用了main函数。其余部分本题无需考虑。双击后进入main函数便看到了一个红色的代码有个jmp是花指令我们需要将花指令剔除需要用到Pacth功能。可以选择手动更改先看jmp先前的代码的值patch
改前改后对比即可知道花指令jmp的值是EB手动更改即是将花指令jmp的每一个的values第一个值改为90
也可以使用IDA python跑脚本
start 0x1144
end 0x3100for i in range(start, end):if get_wide_byte(i) 0xEB and get_wide_byte(i 1) 0xFF and get_wide_byte(i 2) 0xC0:patch_byte(i, 0x90)start即是jmp开始的位置 end要找到这jmp的结尾的位置
在脚本无脑 patch 后发现部分 call 指令出现问题。也就是说有部分 0xeb 是不能被 patch 的。也就是 0xe8 之后四字节内的 0xeb 不能patch。所以我们需要找一下不同从而限制patch操作即需要代码中的if条件进行判断。跑成功后看了一大堆的安慰词终于在最后面看到了flag改格式NSSCTF{u_are2wordy}
web
buu-[ACTF2020 新生赛]Upload
看到了没有任何上传的页面四处划动鼠标成功点亮灯泡得以上传的位置然后我们看一下源代码用ctrlU进入再双击此处可以得知这个对文件名有限制所以我们上传后缀为jpg的一句话木马抓包后改为php但是不成功改为html上传成功再测试蚁剑显示返回数据为空
在Apache中以下后缀名都会被服务器解析为PHP文件 phtml php php3 php4 php5 inc //下面是对上面的大小写混写绕过 pHtml pHp pHp3 pHp4 pHp5 iNc 再改为phtml上传成功再蚁剑测试连接成功。然后保存后点击进去在根目录查看到了flag文件找到了flag