MISC & OSINT
我有一个朋友…
题目:
思路:
一直向他要密码就行,
请告诉我你的密码,谢谢你
请告诉我你的密码
flag:zkaq{!dJustl1ke2int3rj3ct4Amoment}
MISC - ez_misc
题目: sqlmap.pcapng 最后的秘密.zip
思路:
分析 sqlmap.pcapng 流量包,在流 599 中能发现,n,e,c 进行 rsa 解密就行
exp:
from Crypto.Util.number import *
n = 43489217925558007563636756391400797378149529574751021903496069282535133839006866223260410550599538413407426964614588006275007400246991078260390312195904589721338428085434172399719461589261992218665591773334129943107225575727780195166055393685218448420720438980410624810057704307625828329627767464148252758001
c = 36130878068248402738560299131646475603724825552357501315563339107931689677118969949120034243479180229973732010106235105382800417726466593880006557216051126730665469539293176332289284136350093429079449794175396650185724862085491944146833903655679903611518298996520196270292730040114431445396188731766010616304
e = 65537
'''
直接分解 n 就行,发现 p ^ 4 = n,所以直接用 p 进行解密就行
'''
p = 81207361375222669491316104953044746246400146737625592406724026490508197814501
phi = (p - 1)
d = inverse(e, phi)
m = pow(c, d, p)
print(long_to_bytes(m))
# flag{the_password_is_zkaq!!!}
接下来使用密码 the_password_is_zkaq!! ! 解密 最后的秘密.zip,查看 key.txt,内容如下
FGVAGVAFGDAX
很明显了是 ADFGVX棋盘密码,直接解密发现不对,然后在 最后的秘密.zip 这个压缩包里面看到了备注
不知道有啥用,继续分析上面那个密文,
可以知道,明文肯定是 6 位,并切只有字母和数字,那可以直接爆破出来了,还是很快的 30 秒就能出,密码是s1mple
最后想了想,那个提示肯定是有用的,上面肯定非预期了,看到超人和下棋,后面肯定是棋盘密码,那超人应该就是密钥了。试一试,真的是,抽象啊
flag:flag{i_L0ve_th3_w0rLd}
OSINT - 摄影出片
题目:
思路:
-
先确定国家-地区,谷歌识图一下
可以的到:Prudential Tower at night.
-
确定拍照的方向。使用谷歌地图定位到 波士顿的保诚大厦
题目上能看到,旁边有铁路和道路告示牌,很明显要在一条直线上,而且有很宽的公路
在这两块位置找就行,可以再 I-90 公路找到
街道应该就行上面那个 Arlington Street
flag:zkaq{Arlington Street, Boston}
RE & Blockchain
双角出征,寸草不生
思路:
先提取出密文
吧 0x00 都删除。
在 yin 里面完成 patch 然后 yin 会把数据传给 jin,Jin就会执行加密,看到是异或的加密类型,猜测是 rc4 加密
同时调试 2 个程序,yin.exe 输入后,在输入的第一个地址 patch 成我们的密文,
enc = [0x19, 0x37, 0x35, 0x36, 0x08, 0x1B, 0x36, 0x3E, 0xD4, 0xE6, 0x0A, 0x3C, 0xE6, 0x5A, 0x29, 0x16, 0x15, 0x7D, 0x1D, 0x4B, 0xD0, 0x2E, 0xC2, 0xCC, 0x38, 0x0B, 0xD9, 0x98, 0x26]
addr = 0x55F216F6A0
for i in range(len(enc)):
ida_bytes.patch_byte(addr + i, enc[i])
这里有个 sleep 指令改 rip 寄存器到它的下一条指令即可绕过
双击当前 rip 指令指针寄存器,改到下一条指令的地址
之后再 jin.exe 在程序最后下个断点 f9 ,执行完加密函数后,能发现 v59 就是我们的结果,这题的加密代码就是解密代码,
addr = 0xE27B2FF420
flag = [idc.get_wide_byte(addr + i * 4) for i in range(29)]
print(bytes(flag))
flag:flag{Shin_Ai_Na_Ru_Anata_He!}
还有一种方法,个输入的程序不用调试,直接调试那个接收的程序,直接在那个接收的程序 patch 就行,其实方法都差不多
Blockchain - 签到
题目:
Sepolia地址:0x2D62C2bab3848a84C1e84d8669152ebe5f21B9fB
Uniswap:Uniswap Docs | Uniswap
思路:
给了一个 Sepolia地址 ,Uniswap 合约在不同链上部署的合约列表,地址如上,然后能找到下面两条记录,一条一条查看就好了。
然后再第二条记录发现有信息。
直接解密看看,发现 flag
flag:flag{Just_4_Blockchain_Signin~~}
Web
web2
学习:
[【代码审计】star7th/showdoc:v3.2.4 Phar反序列化写webshell_showdoc反序列化-CSDN博客](https://blog.csdn.net/uuzeray/article/details/139469822)
[漏洞复现 | Showdoc反序列化-CSDN博客](https://blog.csdn.net/2301_80127209/article/details/141397363)