| 题目地址:https://www.bugku.com/ctfexercise-competition-177.html 
 题目背景:
 地球已经危在旦夕,此时火星已适合人类居住,地球人将移民火星,方舟计划应运而生,平凡的你因支付不起昂贵的方舟船票,所以你能寄托于买彩票中大奖从而获得一线生机,但是向来非洲血统的你怎么抽的中大奖呢,你现在危在旦夕,此时你如谈想起来你有个超高级的人工智能机器人,或许他能给你带来一线生机………
 
   
 随便注册一个账号进去
 
   
 由故事情节可知我们需要买彩票中大奖从而买到上方舟的飞船票,从而获救接下来就是常规的买彩票界面,当然不可能这样一直买下去,身为一方百姓的你危在旦夕,此时你想起来你有个超高级的人工智能机器人,或许他能给你带来什么佳音……….
 
   
 根据提示,访问 robots.txt 发现一个目录 robots.php
 
 发出了一段奇怪的指令
 
 复制代码011000110110000101101001011100000110100101100001011011110011011000101
110011110100110100101110000
 
 
   
 将二进制转换为字符串,发现一个文件,于是访问该问下,下载得到源码
 
 
   
   
 其中 $numbers 来自用户 json 输入
 
 {"action":"buy","numbers":"1122334"},没有检查数据类型。 $win_numbers 是随机生成的数字字符串。
 
 使用 PHP 弱类型比较,以"1"为例,和 TRUE,1,"1"相等。 由于 json 支持布尔型数据,因此可以抓包改包,构造数据:
 
 
 复制代码1. {"action":"buy","numbers":[true,true,true,true,true,true,true]}
  
 
 有足够的 money 的时候得知不光是有钱就能上这艘方舟得,还得证明自己有智慧,解出如下rsa
 
 
   
 想上飞船不仅仅是有钱就够了,你还得有智慧,解出这道题,你就可以获救了:一次 RSA 密钥对生成中,假设 p=473398606,q=451141,e=17 求解出 d
 
 最后得到flag:D0g3{150754621171553}复制代码import        gmpy2
p        =        gmpy2.mpz(473398606)
q        =        gmpy2.mpz(451141)
L        =        (p-1)*(q-1)
e        =        gmpy2.mpz(17)
d        =        gmpy2.invert(e,L)
print        d
 
 |