靶场练习之hackinglab(鹰眼)-解密题

1、以管理员身份登录系统

    根据题目的提醒,只要将admin用户进行重置密码即可。访问:http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/index.php,进入登录页面,登陆页面有重新设置密码链接:http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/resetpassword.php。访问该链接进入重设密码页面,输入test(普通用户)并使用burpsuite进行拦截。

    我们从响应包中可以找到重设密码的链接为:http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/reset.php?sukey=bbf12854662eaf0bb7c0f1b9023ad655&username=test。如果我们多发送几次的话会发现请求的链接是会改变的,动态变化的是ukey的部分。我们拿该哈希值找一个md5查询网站检索一下发现原字符串为:1621246754。使用 date -d "@+1621246754"查看日期为 2021年5月17日 18点19分14秒。结合响应包来分析的话,我们发现这个日期其实就是响应包里面Date对应的日期所在的东8区的北京时间(东8区的时间会早8个小时)。

    那么现在就是伪造请求包的时刻了,我们将username的值test修改为admin,然后重新发送请求。

    可以看到,我们将username修改为admin的时候并没有给我们请求链接,但是我们已经掌握了sukey的规则了,现在的sukey对应的日期应该是响应包Date字段对应的北京时间,也就是2021/5/18 11:17:00,使用date -d "2021/5/18 11:17:00" +%s 转换为1621307820,使用md5加密之后为b4267f614d66ff422614bc918ade5f29。

    现在可以伪造修改密码的请求链接:http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/reset.php?sukey=b4267f614d66ff422614bc918ade5f29&username=admin,然后访问。

    响应包既结果:key is yestimeispassword

2、邂逅

    点击给出的链接其实下载了一个pcap网络数据包,是802.11*无线通信协议的,也就是我们所说的wifi。这里是要求得到对方的Wi-Fi密码,最简单也是最有效的办法就是暴力破解。

    现在我们需要生成一个字典,根据题目提醒2004年上大三,好像跟年龄有点关系,我们先猜测女孩的无线密码使用的是她的生日。如果按照18岁上大三的话,女孩应该是1983年出生的,我们可以把时间范围扩大一点制作一个从1981年1月1日到1986年1月1日的字典。

import time

start_sec = 347126400
end_sec = 5048928000
pos = start_sec
f = file('/Users/xuyong/Desktop/pwd.txt', "w+")
while pos <= end_sec:
    tmpdata = time.strftime("%Y%m%d", time.localtime(pos))
    f.write("{0}\n".format(tmpdata))
    pos += 86400
f.close()

    将下载的wifi-crack.cap数据包文件和生成的pwd.txt生日字典放入kali linux系统,使用aircrack-ng -w pwd.txt wifi-crack.cap指令进行无线爆破,静静等待。

    结果得知女孩的wifi密码为19940808,计算md5哈希值为:e1a45d0d24cb87490b9efb2fc2e8a2ba

3、cisco密码破解

    第三题只是给出了密文串02070D48030F1C294940041801181C0C140D0A0A20253A3B,然后让解出原文串,看似是非常困难的,但是我们通过分值就可以发现应该隐藏了很简单的条件。

    题目中给出了两个重要的提示信息,一个是cisco,另一个是配置文件。cisco官方有个破解程序cisco_crack专门用来破解配置文件中type7类型的密码,得到这些信息基本就得到了答案。从官方下载复制代码,然后用gcc编译成cisco_crack程序,执行cisco_crack -p 02070D48030F1C294940041801181C0C140D0A0A20253A3B破解。

    最后我们得到结果:aishishenmadongxi@Admin

4、华为/华三交换机解密

    题目中只是给出了"aK9Q4I)J'#[Q=^Q`MAF4<1!!" 密文串,让破解出来密码是什么,也是没有任何提醒。不过只要做过第三道题目,理论上做第四道题目也没什么难度,那就是搜索华为交换机密码等信息。

    万能的互联网搜索,我们得到了华为/华三/思科等交换机加密/解密的工具集,地址为:https://github.com/grutz/h3c-pt-tools/blob/master/hh3c_cipher.py,可自取(拷贝一下文件,然后本地跑一下这个python即可)。我们发现这是一个python脚本,答主使用的是macos系统,在跑这个python之前还略微做了修改,先使用pip install pycrypto和pip install Crypto安装了文件依赖的python加密库,安装完成之后需要找到对应的位置将包名称crypto修改为Crypto,然后按照下面修改一下main函数。

#main函数做了如下修改

if __name__ == "__main__":
    hh3c = HH3CCipher()
    password = hh3c.decipher("aK9Q4I)J'#[Q=^Q`MAF4<1!!")
    print("password:{0}".format(password))

    使用我们的工具运行一下python脚本,打印出来结果:84432079。简单查看一下文件我们会发现文件中使用的是DES对称加密算法。

5、喜欢泡网吧的小明

      题目里面说明了文件中有个字节是错误的,而且卡里面充值了100元,也就是说应该有100的对应字段。使用vim打开netbarcard.dump,然后在命令行模式输入:%!xxd,进行十六进制显示。

    这道题参考了一下网上的答案,文件的开头部分应该是首位呼应的,而文件开头的前几个字节中只有aa和8a是类似的,也是将 开头aa修改为8a,然后在命令行模式下输入:%!xxd -r转换为二进制文件,然后保存退出。将netbarcard.dump导入的系统中,显示出来余额为100元。然后就是找到100元的位置,修改为200。

    原文档中重复出现了1027,一般数字最常用int来存储,既该值对应的16进制为0x00002719,转换成10进制为10000,正好是100的100倍。如果修改为200的话,此处的数值应该为20000,转换成16进制为0x00004e20。将文件中对应位置修改如下:

    最后提交文件,显示:key is cardcrack_skill_get!

6、异常数据

    题目要求对谜语 AGV5IULSB3ZLVSE= 找出对应的解密结果,基本上第一感觉就是base64解密一下,得到结果为:ey!B҇vKU!。看不太懂,所以不是答案。

    这道题也考虑的挺久,也没有发现解决方法,看了一下别人的题解。其实题目已经给出了答案“异常数据”,也就是说这道题给出的部分字节是错误的,应该予以更正。将题目中的字符串的部分字节修改为小写,既:aGV5IUlsb3ZlVSE=(这块需要不停的进行尝试,看哪个得到的解码有意义,基本就算是答案了)。然后再做base64解码得到结果:hey!IloveU!

7、md5碰撞

    访问链接:http://lab1.xseclab.com/pentest5_6a204bd89f3c8348afd5c77c717a097a/,进入之后点击另一个链接地址,并使用burpsuite进行拦截。

    看返回的代码逻辑部分,我们猜测FLAG中应该就是我们想要的信息,而执行到echo $flag这一步,需要password与!1793422703!不一样,而且两个的md5值一样。对!1793422703!计算哈希:0e332932043729729062996282883873。这里涉及到php在进行md5运算的时候的一个bug,意思是说进行md5运算比较时,如果开头部分的字符为0e,md5函数会当成0来对待,且两个md5哈希字符串相等。我们可以从网上搜到一些哈希值0e开头的字符串,如s878926199a。

    一开始对code.txt做了一些常识都没有成功执行,后来又尝试对原链接:http://lab1.xseclab.com/pentest5_6a204bd89f3c8348afd5c77c717a097a/做post请求,就找到了答案。

    从响应包中得到结果:<a href="code.txt">__</a>yesyouareclever!

8、小明抓包数据分析

    下载hackinglab-logic.logicdata文件,使用vim打开该文件进行查看。

    二进制文件,看不懂什么格式,不过我们从题目中获知这是一种逻辑分析仪的抓包数据,而文件中有一个关键字是SaleaeAsyncSerialAnalyzer。网上搜索一下发现与之对应的有个软件,下载并安装了破解版之后,协议文件便可以打开了。

    选择Ascii格式显示后,对话框中显示出来iloveyouCOMMAxiaoguniang!等字样,输入进去发现答案不对,按照常用对话的习惯,现在将COMM替换成“,”符号,既答案为iloveyou,xiaoguniang!

9、长度扩展攻击

    长度扩展攻击一般需要满足两个条件,一个就是加密算法计算明文之前需要填充到固定块大小的整数倍,如md5算法是以64字节(512bit)为一块,不足的部分按照bit位先填充1,然后填充0,直至剩余的8个字节填充长度;另一个条件就是针对分块分组的部分是累加计算的,既第一块运算出来的结果会投入到下一个块计算中去。

    可以使用长度扩展攻击的算法一般有md4、md5、sha1、sha256、sha512等哈希算法。攻击场景一般是在不知道加密salt的前提下,通过原消息数据追加消息数据得到新消息数据,并且计算新的消息哈希值,来达到数据伪造的目的。因为 md5 ( salt + 字符串A ) 得到哈希值 hashA。现在如果想计算md5 (salt + 字符串A + 字符串B)的哈希值的话,需要修改哈希算法,将hashA填充到四个哈希计算的初始变量中,然后使用修改后的哈希算法 计算 md5( 字符串B)即可。

    访问http://lab1.xseclab.com/decrypt1_53a52adb49c55c8daa5c8ee0ff59befe/md5_le.php链接,页面显示出来哈希值:f3d366138601b5afefbd4fc15731692e,而且salt的字符串长度为32。使用burpsuite进行拦截查看。

    我们发现当GET请求的参数中没有filepath和sign的话,直接打印出来/etc/hosts计算出来的哈希值,既md5( salt加密盐 + "/etc/hosts" 字符串),当uri中有filepath和sign的话,会使用md5( salt加密盐 + filepath字符串)计算结果与sign进行比对,一致则将filepath内容出来。所以页面上我们得到的f3d366138601b5afefbd4fc15731692e 既为 md5 ( salt + "/etc/hosts" )的计算结果。

    现在需要我们伪造sign和filepath,而且我们需要构造出来 md5 ( salt + 字符串A + 字符串B)的效果,于是uri中需要提交的filepath文件必须包含/etc/hosts等字符串,然后填充到64字节的倍数,然后再加上新的数据,我们以helloworld为例。

    首先根据md5( salt加密盐 + "/etc/hosts" 字符串) 计算出来的哈希值: f3d366138601b5afefbd4fc15731692e,修改md5算法的初始化变量

state[0] = 0x1366d3f3;
state[1] = 0xafb50186;
state[2] = 0xc14fbdef;
state[3] = 0x2e693157;

    根据填充规则,salt占32字节,/etc/hosts占10字节,出去结尾的8字节的长度值,因此我们需要填充14个字节的内容。

    填充规则为第一位为1,其余位为0,既%80%00%00%00%00%00%00%00%00%00%00%00%00%00

    后面是8字节的长度值,长度值的计算:数据的(不算填充数据和长度值)字节数 * 8计算出来数据的位数,然后换算成十六进制,此处的数据为 salt + /etc/hosts,既为42字节,既336位,十六进制为150。长度值的小端表示为%50%01%00%00%00%00%00%00。填充完成之后我们可以加入自己的数据,比如helloworld。

    现在重新伪造uri请求:http://lab1.xseclab.com/decrypt1_53a52adb49c55c8daa5c8ee0ff59befe/md5_le.php?filepath=/etc/hosts%80%00%00%00%00%00%00%00%00%00%00%00%00%00%50%01%00%00%00%00%00%00helloworld&sign=5eb176b6572a5235171d72fe0fedb501

    其中5eb176b6572a5235171d72fe0fedb501为helloworld字符串的md5哈希值,不过该哈希值的计算需要使用修改过的哈希算法。一方面需要修改初始化变量,另一方面是修改算法中针对helloworld字符串做填充之后的长度值,因为正常的算法是按照真实的字符串填充的,而我们现在要伪造出来累加计算的效果,既先计算了salt+/etc/hosts%80%00%00%00%00%00%00%00%00%00%00%00%00%00%50%01%00%00%00%00%00%00,然后再计算helloworld,此时需要对hellowrold进行填充,不过填充之后的长度就应该包括已经计算的前半部分,此时的字节数为64 + length("helloworld"),既74,长度为 74*8 = 592,十六进制表示为250,修改如下:

    发送新构建的请求,可以得到结果:Flag is: Md5LenghtExtAttackNowYouSee

10、密码器的开门密码

    下载reverse_1.exe.zip,解压之后发现是一个exe程序,放在windows上运行了一下这个程序,让输入口令,输入完口令之后显示Error信息。

    现在使用ida对该exe进行一下调试,调试结果图如下:

    根据逆向的结果,该密码值为:0h_No_u_f0und_m3。 

    大家可以尝试一下,该题目或许会有更简单的方式。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值