0%

greeting-150

分析过程

  1. 用户输入user_string,程序调用highly_optimized_parallel_comparsion(user_string)函数。而highly_optimized_parallel_comparsion会作运算得到3个arguments
  • first_letter:random%26+97(由于没有设置seed 导致每次random得出的值都是11)
  • differences(固定数组)
  • user_string(用户输入)
  1. 接下来通过pthread_create创建进程将argument传入checking,pthread_join等待进程结束得到result
  2. 分析pthread_join的后面的程序,发现pthread_join得到的result会和just_a_string(固定数组)相加得到generated_string,而如果generated_string!=just_a_string则return 0 ,因此可以判断所有 pthread_join得到的result都为0时程序才能使is_ok=1
  3. 因此*result = (argument[0]+argument[1]) ^ argument[2]中的result需要为0即user_string= (97+11 + difference[i])^0
  4. exp如下
1
2
3
4
5
list1=[0, 9, -9, -1, 13, -13, -4, -11, -9, -1, -7, 6, -13, 13, 3, 9, -13, -11, 6, -7]
s=''
for i in range(0,20):
s+=chr(list1[i]+108)
print(s)