v4.2.2.9:4.2.2 突破密码验证程序

作者: 王清编著 出处:电子工业出版社博文视点

4.2.2 突破密码验证

实验环境要求如表4-2-1所示
表4-2-1 实验环境

prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 

推荐使用环境

   


操作系统

Windows XP sp2

其他Win32操作系统也可进行本实验


编译器

Visual C 6.0

如使用其他编译器需重新调试


编译选项

默认编译选项

VS2003VS2005GS编译选项会使栈溢出实验失败


build版本

debug版本

如使用release版本则需要重新调试




介绍说明:如果完全采用实验指导所推荐实验环境将精确地重现指导中所有细节;否则需要根据具体情况重新调试


请您在开始实验前务必先确定实验环境是否符合要求
按照设计思路只有输入了正确密码“1234567”的后才能通过验证运行情况如图4.2.2所示

498)this.style.width=498;" border=0> 
图4.2.6 修改邻接变量成功


题外话:严格说来并不是任何8个串都能冲破上述验证由代码中authenticated=strcmp(password,PASSWORD)我们知道authenticated值来源于串比较strcmp返回值按照序关系当输入串大于“1234567”时返回1这时authenticated在内存中值为0x00000001可以用字串截断符NULL淹没authenticated低位字节而突破验证;当输入串小于“1234567”时(例如“0123”等串)返回-1这时authenticated在内存中值按照双字-1补码存放为0xFFFFFFFF如果这时也输入8个截断符淹没authenticated低字节后其值变为0xFFFFFF00所以这时是不能冲破验证图4.2.6所示“01234567”输入就属于这种情形如果您感兴趣可以尝试进步调试研究这种情况



  • 篇文章: 4.2.1 修改邻接变量原理

  • 篇文章: 4.3.1 返回地址和流程
  • Tags:  8310rom4.2.2.181 8820rom4.2.2 quest3d4.2.2 v4.2.2.9

    延伸阅读

    最新评论

    发表评论