点击题给链接可以看到一个弹窗 要求输入flag:

西普CTF-FLAG-以夕阳落款

查看当前网页源代码 可以发现该窗口是简单的JavaScript 只是判断代码十分冗长:

西普CTF-FLAG-以夕阳落款

判断代码如下:(这里为了方便阅读,对代码做了一些处理,将&&替换成了换行)

a.length==47
a[11]-a[5]%a[1]*a[12]%a[14]-a[6]*a[7]-a[24]+a[10]%a[13]+a[2]*a[23]+a[21]+a[15]%a[3]%a[19]-a[20]*a[0]%a[17]+a[18]-a[22]+a[8]+a[4]-a[9]+a[25]+a[16]==-161
a[14]+a[19]%a[20]-a[3]-a[4]+a[5]%a[23]%a[12]%a[21]-a[18]%a[24]%a[0]+a[6]*a[17]-a[7]*a[9]-a[10]+a[8]+a[22]*a[15]%a[16]-a[26]-a[1]%a[11]+a[2]+a[25]+a[13]==-42
a[34]+a[27]+a[29]-a[10]*a[13]*a[20]%a[31]+a[2]*a[23]-a[0]*a[8]-a[6]*a[9]-a[19]%a[3]+a[15]%a[1]-a[25]-a[26]*a[16]%a[30]-a[17]+a[12]+a[5]-a[33]+a[21]+a[24]*a[14]+a[11]*a[32]-a[22]*a[4]+a[18]+a[28]-a[7]==-56
a[20]+a[13]%a[4]-a[21]+a[16]-a[12]+a[11]%a[9]%a[3]%a[0]*a[8]%a[2]+a[5]%a[17]+a[15]-a[10]%a[18]-a[6]-a[1]-a[19]*a[7]%a[14]==-76
a[6]%a[29]+a[4]+a[18]%a[22]+a[16]+a[30]-a[19]*a[21]+a[24]+a[5]-a[34]*a[13]+a[17]*a[11]-a[31]*a[23]+a[14]+a[28]+a[20]-a[10]+a[32]+a[33]%a[12]*a[26]+a[2]%a[15]*a[1]+a[27]*a[25]-a[3]%a[7]%a[8]*a[9]-a[0]+a[35]==-129
a[1]*a[3]*a[5]%a[6]-a[2]%a[0]+a[4]-a[7]==18
a[19]+a[20]+a[4]+a[0]-a[17]-a[8]-a[2]*a[7]+a[18]-a[14]-a[3]-a[5]+a[10]-a[11]+a[6]*a[1]%a[13]%a[15]*a[12]-a[9]-a[16]==-36
a[6]-a[1]+a[4]+a[0]%a[5]%a[2]-a[3]==21
a[1]-a[5]%a[4]%a[8]%a[3]-a[10]-a[0]%a[7]%a[9]%a[6]-a[2]==-157
a[9]%a[5]-a[11]+a[7]-a[0]%a[10]*a[4]%a[3]+a[1]-a[6]%a[8]+a[2]==99
a[1]+a[4]%a[0]%a[3]*a[7]%a[6]-a[8]-a[2]+a[5]==127
a[8]+a[34]%a[10]%a[4]%a[16]+a[25]+a[15]-a[31]-a[2]*a[3]-a[27]*a[13]%a[23]%a[1]+a[17]*a[26]+a[5]%a[30]+a[35]%a[36]+a[22]%a[7]%a[29]-a[21]+a[28]*a[18]-a[37]+a[38]+a[11]%a[20]+a[9]-a[32]-a[0]*a[14]+a[33]*a[12]+a[24]-a[19]+a[6]==4
a[2]-a[1]-a[3]+a[0]==-12
a[6]%a[25]%a[17]+a[24]-a[23]+a[15]%a[31]*a[13]+a[29]-a[12]%a[0]*a[11]-a[27]+a[5]-a[2]-a[10]%a[28]*a[14]-a[8]+a[7]*a[22]+a[26]+a[3]%a[21]+a[32]-a[20]*a[4]+a[30]+a[18]*a[16]-a[9]%a[1]%a[19]==132
a[17]-a[11]+a[1]-a[0]%a[5]*a[12]%a[13]+a[4]%a[14]-a[10]-a[15]%a[8]%a[7]+a[6]-a[2]%a[16]+a[9]+a[3]==128
a[28]+a[19]*a[9]+a[26]%a[5]-a[22]+a[3]%a[4]+a[12]%a[0]+a[25]%a[2]%a[13]-a[15]+a[23]%a[21]*a[27]%a[20]%a[16]%a[11]+a[24]%a[7]-a[6]*a[1]-a[14]+a[18]+a[10]%a[8]-a[17]==-43
a[11]*a[2]%a[19]*a[6]-a[14]+a[32]*a[1]%a[28]-a[3]%a[27]-a[4]+a[13]+a[24]%a[12]-a[10]+a[23]-a[15]%a[0]%a[31]%a[16]-a[17]*a[7]%a[21]%a[20]%a[25]*a[8]+a[22]*a[18]%a[5]-a[26]+a[33]+a[9]%a[30]%a[29]==87
a[11]*a[17]%a[16]-a[18]%a[13]+a[10]+a[0]%a[5]-a[23]+a[15]*a[21]%a[20]+a[9]+a[7]-a[19]*a[2]-a[24]+a[1]*a[14]+a[6]%a[4]%a[8]%a[3]-a[22]-a[12]==-130
a[1]-a[3]-a[6]*a[9]%a[13]-a[18]+a[2]*a[12]*a[7]%a[0]-a[16]+a[17]-a[4]*a[5]%a[14]+a[10]*a[11]*a[15]%a[8]==-123
a[14]-a[26]-a[21]+a[34]%a[15]+a[9]+a[19]%a[13]+a[36]+a[18]%a[11]*a[12]%a[30]+a[29]+a[31]%a[17]-a[5]*a[24]*a[20]%a[8]%a[22]-a[4]-a[25]%a[10]-a[6]-a[3]-a[0]*a[23]%a[35]+a[28]%a[16]%a[32]%a[2]+a[33]-a[1]*a[27]%a[7]==-75
a[31]%a[38]+a[23]%a[33]-a[10]*a[3]+a[5]+a[35]-a[20]%a[27]*a[13]+a[30]%a[14]*a[1]%a[6]+a[37]%a[4]-a[26]*a[21]-a[7]-a[36]-a[16]*a[0]+a[28]*a[34]*a[42]*a[41]%a[9]-a[15]+a[19]*a[24]+a[11]*a[17]+a[39]%a[32]+a[43]+a[18]*a[2]-a[12]-a[25]-a[29]-a[22]+a[8]*a[40]==123
a[4]*a[3]%a[2]%a[0]-a[5]+a[1]==48
a[25]-a[30]+a[16]-a[37]-a[21]*a[36]*a[4]%a[11]+a[32]-a[29]%a[34]-a[2]+a[20]%a[1]+a[10]-a[33]+a[0]%a[19]-a[22]+a[8]+a[13]%a[31]+a[17]%a[24]%a[7]+a[26]-a[3]%a[14]%a[12]*a[5]%a[18]-a[23]*a[6]%a[28]+a[15]-a[35]+a[27]%a[9]==21
a[2]-a[4]+a[3]%a[0]+a[1]==83
a[7]*a[21]*a[12]%a[3]-a[17]-a[38]+a[23]+a[6]%a[28]%a[27]%a[14]%a[39]+a[13]+a[32]+a[40]-a[4]-a[8]%a[11]%a[25]*a[31]+a[20]*a[24]%a[29]%a[34]*a[30]%a[33]%a[5]-a[26]*a[18]%a[2]+a[10]+a[36]*a[9]%a[37]*a[19]-a[15]*a[1]%a[35]%a[22]%a[16]-a[0]==75
a[27]*a[29]*a[11]%a[8]-a[24]*a[16]+a[10]%a[2]%a[7]*a[6]+a[23]+a[0]+a[4]*a[22]-a[30]+a[12]-a[17]%a[5]%a[1]*a[15]-a[19]*a[20]-a[3]-a[9]-a[13]+a[25]*a[18]%a[14]+a[26]%a[28]*a[21]==19
a[45]-a[9]%a[42]-a[0]+a[44]%a[20]*a[13]-a[38]%a[36]*a[17]+a[24]+a[31]+a[28]-a[7]%a[16]*a[39]*a[25]*a[1]%a[14]*a[41]-a[18]-a[4]-a[3]%a[10]+a[23]%a[12]+a[37]*a[29]%a[2]+a[30]-a[22]+a[32]%a[34]+a[33]+a[8]%a[26]*a[11]*a[15]%a[40]%a[5]%a[19]-a[21]+a[43]%a[6]*a[35]+a[27]==-76
a[7]+a[9]+a[1]-a[11]*a[5]*a[3]%a[12]-a[13]-a[4]-a[6]+a[8]%a[2]%a[0]%a[10]==-84
a[0]-a[1]==-6
a[2]-a[6]%a[8]+a[7]-a[4]-a[1]%a[3]+a[9]-a[5]+a[0]==50
a[44]-a[24]+a[25]%a[30]%a[41]*a[3]-a[23]+a[20]*a[38]+a[15]-a[43]+a[8]-a[29]*a[9]+a[27]+a[33]-a[39]*a[18]%a[0]+a[7]-a[6]-a[42]-a[2]+a[31]+a[4]-a[32]*a[40]-a[22]+a[13]+a[34]%a[17]*a[14]%a[37]+a[36]-a[10]*a[5]%a[11]*a[19]+a[12]+a[16]%a[35]*a[21]+a[28]-a[26]-a[1]==-44
a[9]%a[3]%a[7]%a[0]%a[4]-a[2]-a[11]-a[12]+a[6]-a[5]%a[10]+a[8]-a[1]==-187
a[8]%a[7]+a[6]-a[14]-a[4]%a[17]+a[11]-a[12]%a[5]%a[2]+a[15]-a[9]%a[10]*a[13]%a[0]-a[18]+a[19]+a[16]-a[3]-a[1]==-7
a[12]%a[3]+a[15]-a[0]-a[11]+a[13]+a[4]*a[2]%a[1]-a[10]-a[5]+a[9]+a[6]%a[7]*a[8]%a[14]==-22
a[4]+a[16]+a[10]+a[5]-a[7]-a[11]-a[9]%a[13]-a[1]-a[12]%a[2]*a[14]%a[8]%a[6]+a[3]-a[15]%a[0]==97
a[0]*a[1]%a[11]*a[14]%a[10]+a[5]+a[7]%a[13]-a[4]%a[19]-a[15]-a[8]%a[18]%a[21]%a[12]%a[17]-a[3]%a[9]-a[6]+a[20]+a[16]+a[22]-a[2]==112
a[0]==102
a[2]+a[0]-a[1]==91
a[5]*a[4]%a[12]+a[18]+a[27]+a[22]+a[21]-a[10]-a[25]-a[20]%a[7]+a[14]%a[17]%a[23]+a[19]*a[13]%a[26]-a[1]*a[3]%a[8]+a[24]-a[6]+a[16]+a[0]-a[9]-a[15]%a[2]-a[11]==163
a[8]*a[10]*a[4]*a[21]%a[26]*a[6]%a[14]+a[22]*a[5]+a[18]-a[25]-a[7]-a[11]+a[23]-a[9]*a[15]-a[2]+a[28]%a[17]*a[1]%a[0]-a[3]%a[16]-a[12]*a[20]+a[29]+a[27]%a[24]%a[19]-a[13]==-46
a[21]-a[36]-a[16]+a[28]-a[3]%a[1]+a[35]-a[8]-a[30]+a[29]%a[19]+a[39]-a[2]+a[24]*a[11]%a[34]%a[15]%a[38]%a[12]-a[33]+a[20]%a[14]-a[18]-a[31]+a[5]%a[10]+a[7]+a[4]%a[26]*a[23]+a[27]-a[6]*a[37]%a[17]*a[25]%a[9]%a[22]-a[0]*a[13]%a[32]==184
a[38]*a[34]%a[30]-a[31]+a[26]-a[27]-a[16]%a[0]-a[18]%a[24]%a[29]%a[12]+a[20]-a[15]*a[7]+a[17]-a[13]-a[36]-a[25]%a[8]*a[22]+a[6]-a[35]%a[39]+a[9]%a[3]%a[10]%a[19]*a[37]+a[40]%a[28]+a[41]-a[2]*a[23]*a[4]%a[1]-a[32]%a[14]%a[11]*a[21]%a[5]+a[33]==167
a[13]-a[6]%a[5]-a[0]%a[9]+a[21]+a[23]+a[18]%a[17]%a[16]%a[7]-a[20]%a[1]*a[15]%a[19]%a[8]*a[2]%a[22]-a[14]%a[11]%a[10]*a[4]%a[3]+a[12]==155
a[23]+a[26]%a[17]%a[20]*a[39]-a[7]-a[0]-a[27]*a[15]+a[25]%a[18]%a[16]%a[42]%a[32]+a[6]*a[14]-a[2]-a[36]+a[35]+a[29]+a[34]-a[31]-a[5]+a[41]%a[3]*a[13]*a[10]%a[12]-a[21]*a[38]%a[24]-a[46]+a[33]%a[4]%a[11]*a[40]%a[44]+a[28]-a[22]%a[30]+a[8]-a[19]-a[1]*a[43]*a[37]%a[45]+a[9]==183
a[22]%a[18]+a[12]*a[23]-a[41]*a[17]+a[15]-a[5]%a[25]-a[14]%a[16]-a[3]+a[36]+a[1]-a[42]+a[26]%a[39]%a[10]+a[28]%a[27]-a[7]-a[30]-a[19]%a[2]+a[32]%a[0]-a[6]+a[11]-a[13]%a[35]*a[29]-a[4]*a[24]*a[37]%a[40]+a[31]%a[33]*a[38]-a[21]+a[8]*a[34]%a[20]*a[9]==39
a[6]%a[0]*a[9]%a[2]%a[4]%a[10]-a[14]+a[13]%a[11]-a[8]%a[5]+a[7]+a[12]+a[1]-a[3]==163
a[13]-a[15]+a[23]*a[17]*a[27]%a[8]-a[14]%a[22]-a[29]*a[5]%a[25]+a[4]%a[10]-a[19]%a[7]%a[12]%a[11]+a[20]+a[31]+a[18]+a[21]*a[30]%a[1]%a[28]+a[0]%a[26]+a[6]%a[24]%a[3]-a[2]-a[16]-a[9]==147

如果时间足够,可以手算。但为了方便,我们选择用脚本处理。处理程序同样有两种思路:

1. 使用形如手算的解方程方式

2. 按位穷举所有可打印字符

该题规模很小,为了降低编程复杂度,我们选择第二种思路。

实现代码如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

strl = 47
s = ""

with open("foo.txt", 'r') as f:
	t = f.readlines()
for line in t:
	line = line.strip('\n')
t.sort(lambda a,b:len(a) - len(b)) # 按长度排序以符合处理顺序

def dealing(str1, p):
	global s
	for i in range(p): # 处理已知位
		parsera = 'a[' + str(i) + ']'
		str1 = str1.replace(parsera, str(ord(s[i])), 1)
	parsera = 'a[' + str(p) + ']'
	for i in range(32,127): # 穷举当前未知位
		t1 = str1
		t1 = t1.replace(parsera, str(i), 1)
		if eval(t1):
			s += chr(i)
			break

if __name__ == '__main__':
	for i in range(strl):
		# print i
		dealing(t[i], i)
	print s

 
Flag:

温馨提示: 此处内容需要评论本文后刷新才能查看,支付2元即可直接查看所有Flag。

小广告:关于获取西普实验吧所有Writeup请点击这里查看索引

查看所有Flag需要付费,需要获取所有Flag的童鞋请访问这里成为付费用户,可以自助把自己的注册邮箱加入网站白名单,即可免回复看到本站所有Flag

Flag大全地址:所有Flag

PS:本站不是实验吧的官方站点,纯粹是个人博客,收取Flag费用仅是维持服务器费用,做站不易,且行窃珍惜,如果喜欢我的博客,愿意捐赠的,可以扫描下面的二维码

微信二维码:
支付宝二维码: