通过浏览器的开发者工具或代理抓包软件观察在输入框输入“name ”后点击 “Go” 按钮发出的POST请求与收到的响应。
通过上一步知道使用了 POST,而从之前的请求和响应中无法找到 magic number 相关信息,我们直接点 Go。
观察到请求中的 Body 部分存在 magic_num ,填入即通关
按要求先点击 Submit 按钮,查看拦截到的 POST 请求
按要求对其进行修改,将 POST 改为 GET,将 Body 中的参数删去,在URL后添加 Query string parameter, 为?changeMe=Requests+are+tampered+easily
, 并在头部添加字段 X-Request-Intercepted: True
,发送后即可通关
按要求在控制台输入命令即可看到结果
点击”Go“按钮,在 ”网络“ 标签下监测,查看名为 network 的 POST请求,在 Payload 中即可找到 networkNum
通过 Base64 解码,即可获得用户名和密码
在 Google 搜索 WebSphere Encoder 找到对应加解密网页,输入即可得到解密内容
根据位数推测两个哈希值的算法,可知上面为 MD5,下面为 SHA256,通过尝试几个弱口令比对其哈希值即可得出答案
这题是遇到的第一道有一定难度的题,需要掌握 openssl 的相关操作后才有做对这题的基础
首先,我们对于给出的以“-----BEGIN PRIVATE KEY-----”开头,以“-----END PRIVATE KEY-----”结尾的私钥要有一个明确的认识,这是 PEM 格式的密钥,相关知识自行查询了解
首先,我们将给出的私钥保存到文件“test.key”中,注意,包含头部和尾部。
使用命令
openssl rsa -modulus -in test.key -out test.modulus -noout
将模数打印到文件“test.modulus”中
将文件中开头的"Modulus="和结尾的回车删除,只保留模数的数值
使用命令
openssl dgst -sign test.key -sha256 -out modulus.signature test.modulus
将模数经私钥签名后存入文件“modulus.signature”
可以看到签名后的结果无法正常显示出来
使用命令
openssl enc -base64 -in modulus.signature -out signature.base64
将签名后的结果进行 base64 编码存入文件“signature.base64”
将模数和签名后经过 base64 编码后的结果填入题目空格处即可完成
本题可以说是绪论部分的压轴题,有相当的难度
sudo docker exec -it <Container ID> bash
打开容器的 bash 终端
尝试打开 /root 提示权限不够
查看配置文件夹 /etc 中“passwd”和"shadow"的权限,发现“passwd”对普通用户只读,“shadow”只对”root“用户可读写
鉴于容器内不具备获取 root 权限的条件,我们退出容器,使用命令
sudo docker cp <Container ID>:/etc/shadow shadow
将容器中的"passwd"文件拷出
接下来,我们试图将手动计算出的一个密码对应的哈希值写入“passwd”中,并将其拷回覆盖掉原有”passwd“实现容器中 root 身份的登录
首先,通过如下命令
mkpasswd -m sha-512 password
生成一段密码“password”对应的哈希值
将这段哈希值拷入“passwd”文件中,替换掉"root:"字段后的字母“x”,保存退出
sudo docker cp passwd <Container ID>:/etc/passwd
将修改后的“passwd”拷回容器,覆盖掉原有文件
重新进入容器打开 bash,查看确认“passwd”文件修改情况
现在,输入命令su
,输入密码password
,即可获取 root 身份
接下来,进入 /root 目录,可以看到文件“default_secret”,查看其内容即可获取秘密
最后,根据给出的命令,在结尾加上密钥即可得到最终的信息
本题考查对 Java 和 HTML 源码的基础阅读能力
通过阅读 HTML 源码,我们可以看到,任务中输入的两个参数被分别存入“param1”和“param2”两个变量中,并随表单传回后端服务器
在后端函数中,我们可以看到,“SampleAttack"类中定义了一个常量“secretValue”,并在其中的函数“completed”中,将"param1"与“secretValue”比较,相同则任务完成,因此,将任务中的“parameter 1”中填入"secr37Value”,"parameter 2"不填或填入任意值即可通过