zip-zip(子函数调用)

  • 题目

    监听服务器端口,得到题目如下:

  • 源码解析

    • 主函数

      主函数中是题目界面的逻辑,对应于用户的选择做出相应的操作,其中需要注意的是选项2,解压操作需要获得root权限(uid==0).

    • 选项1,2:文件压缩和解压缩,是常规的文件压缩代码,不做解释。

    • 选项3:buy操作,buy()函数调用了加密函数encrypt();根据具体的实现逻辑,可知使用的是RSA加密算法。其中n=221,e=7,从传入参数和题目中的tips都能得到。如果满足密文的前三个字符的ascii码值为149,108和21,则获得root权限。

    • 题解

      整个解题思路如下。首先选择3,通过加密操作获得root权限。

      获得CDK的脚本如下(RSA解密):

      python 复制代码
      import gmpy2
      def Decrypt(c,e,p,q):
          L = (p-1)*(q-1)
          d = gmpy2.invert(e, L)
          n = p*q
          crypto = gmpy2.powmod(c, d, n)
          print(chr(crypto))
      if __name__ == "__main__":
          p = 17
          q = 13
          e = 7
          c = 149
          Decrypt(c,e,p,q)

      然后选择1,对目标文件flag进行压缩,压缩文件的命名为pwn,即当前正在运行的文件,压缩的同名文件不会影响此次程序的运行,因为程序运行尚未结束,其挂载到了/proc目录下。然而下次运行时,真正运行的文件将会是原来的flag而不是pwn。最后选择3,由于解压操作接收到的文件名的长度只有1,不能正确解压上一步得到的pwn文件(flag),所以需要手动终止程序的运行。此处涉及到一个知识点,即unzip函数和zip函数都是main函数的子函数,利用子函数同栈内存大小相等的特点,在手动结束程序运行时,unzip的局部变量filename正是上次在zip函数中输入的文件名,即pwn。

相关推荐
mottte5 天前
BUUCTF[极客大挑战 2019]Havefun 1题解
php·web·ctf
mottte5 天前
BUUCTF[ACTF2020 新生赛]Include 1题解
web·ctf·文件包含漏洞
Star abuse9 天前
2025一带一路暨金砖国家技能发展与技术创新大赛第三届企业信息系统安全赛项
安全·web安全·ctf·全国职业院校技能大赛
落寞的魚丶9 天前
第三届宁波技能大赛网络安全赛项样题
网络安全·渗透测试·ctf·服务器配置·第三届宁波技能大赛
kali-Myon11 天前
栈迁移与onegadget利用[GHCTF 2025]ret2libc2
c语言·安全·pwn·ctf·栈溢出·栈迁移·onegadget
亿.612 天前
“轩辕杯“云盾砺剑CTF挑战赛 Web wp
web·ctf·writeup
未完结的牵挂16 天前
第二届帕鲁杯 solar_Linux后门排查 WP
网络安全·ctf·应急响应
ALe要立志成为web糕手17 天前
php://filter的trick
安全·web安全·网络安全·php·ctf
uwvwko20 天前
ctfshow——web入门254~258
android·前端·web·ctf·反序列化
uwvwko21 天前
BUUCTF——web刷题第一页题解
android·前端·数据库·php·web·ctf