• 查壳,没有壳
  • 直接 IDA F5,可以看出程序流程十分简单。用 gets() 获得输入的验证码之后,将验证码传入到 sub_401060() 进行正确与否的判断。所以关键是要弄明白 sub_401060() 这个函数。
  • 西普CTF-证明自己吧-以夕阳落款
  • 对 sub_401060() F5 分析后,可以得知验证流程是这样的,输入的验证码长度必须为 14,然后将验证码逐个字符与 0x20 做异或。然后内存 40708C 地址处存在一串字符串,将该字符串逐字符做 -5 运算。最后将上面运算得出的两串字符串比较,如果相同就说明输入的验证码是正确的。
  • 西普CTF-证明自己吧-以夕阳落款
  • 解密得到正确的验证码的思路就很清晰了。首先将内存中的字符串逐字符做 -5 运算,然后再将该字符串与 0x20 逐字符做异或运算,得到的字符串即是正确的输入验证码。
  • 因为最近在学 16 位汇编,突然就想到解密这么简单要不就用汇编练练手算了。编写后的汇编源代码如下。
  • 西普CTF-证明自己吧-以夕阳落款
  • 用 MASM5.0 编译链接,debug 后在内存中即可看到正确的验证码。
  • 西普CTF-证明自己吧-以夕阳落款
  • 谢谢

Flag:

温馨提示: 此处内容需要评论本文后刷新才能查看,支付2元即可直接查看所有Flag。

小广告:关于获取西普实验吧所有Writeup请点击这里查看索引

查看所有Flag需要付费,需要获取所有Flag的童鞋请访问这里成为付费用户,可以自助把自己的注册邮箱加入网站白名单,即可免回复看到本站所有Flag

Flag大全地址:所有Flag

PS:本站不是实验吧的官方站点,纯粹是个人博客,收取Flag费用仅是维持服务器费用,做站不易,且行窃珍惜,如果喜欢我的博客,愿意捐赠的,可以扫描下面的二维码

微信二维码:
支付宝二维码: