i春秋象棋
这是一道非常有意思的一道题,打开后就是一个pve的象棋游戏,我觉得下赢了就应该会出现flag,可惜多次尝试后失败了(果真有点厉害,我一时兴起就玩了好几把,有空试试拿更厉害的电脑跟他对下,如果赢了会怎么样)
不说象棋游戏了,我们来做这道题,首先是不可能通过下赢来获取flag的,他会自动挑战大师水平,尽管我选的新手。。。。(我菜)
让另一个电脑大师级的和他对下,终于赢了(全程看不懂),但还是没flag。。。
查看源码发现js中有关键内容
这里的文件都是js/巴拉巴拉的,所以很明显这是一个正则表达式,百度传送门:
https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215?fr=aladdin
这里附上一个py脚本爆破正则表达式(源码链接:https://www.ichunqiu.com/writeup/detail/781)
#!/usr/bin/python # coding=utf-8 # Author=haya import urllib2 from multiprocessing.dummy import Pool as ThreadPool urllist = [] re1 = 'myx' re2 = '012346789' url = 'http://fffe6af593794c94834b881524ab1aa9f63ccb660b0648a2.changame.ichunqiu.com/js/' pool = ThreadPool() def url_list(): for i in re1: for j in re1: for k in re2: for l in re2: for m in re2: urllist.append(url+i+j+'ctf'+k+l+m+'.js') return urllist def url_open(url): try: result = urllib2.urlopen(url).read() if '404' not in result: print url+result except: pass def main(): urllist = url_list() pool.map(url_open, urllist) pool.close() pool.join() if __name__ == '__main__': main()
运行就可以爆破出js文件也就是flag