easyre-153 WP 前言这个程序逆向起来还是挺懵逼的。一向我都是习惯了程序有提示输入然后输出结果。程序的路径很多找到正确路径花费了比较长的时间我就直接说正确的做法了。分析IDA打开动态调试跟踪到需要强制执行if里的代码块当执行到注意此句代码还未执行将同目录下生成的AAAAA开头的文件拖入IDA程序会创建一个管道然后开启一个子进程进行进程间通信。子进程将69800876143568214356928753发送给父进程。父进程要求用户输入一个整数并且等于子进程的pid。后面就会对发送过来的数据进行解码成flag输出来。lol()函数就是解码函数看流程图原来输出解码后的数据的那部分代码被作者改掉了永远也不会执行。解码的操作也不复杂直接用pthon脚本吧。脚本raw69800876143568214356928753 flag flagchr(2*ord(raw[1])) flagchr(ord(raw[4])ord(raw[5])) flagchr(ord(raw[8])ord(raw[9])) flagchr(ord(raw[12])*2) flagchr(ord(raw[17])ord(raw[18])) flagchr(ord(raw[10])ord(raw[21])) flagchr(ord(raw[9])ord(raw[25])) print RCTF{flag}总结程序路径多的时候我们要强制程序执行每一个路径这样才能发现问题而不是顺着程序的性子永远也得不到真相