[BUUCTF]login WP

NOTE:

这题和以前做的题不一样,是javascript有关的题,记录一下

查看源代码

在这里插入图片描述
对输入的flag进行处理,是字母的进行变换,不是字母的不变,并和给出的字符串进行对比,若相同则为正确flag

对javascript函数的一些解释

var rotFlag = flag.replace(/[a-zA-Z]/g, function(c){return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);});

replace()函数的一些用法

一、replace(字符串,字符串) 用后面的替换前面的

二、replace(正则表达式,字符串)

str ='abcdefa'
str = str.replace(/a/g,'e')

正则表达式中的g是匹配所有匹配项

三、replace(正则表达式,function())
对str做match()匹配,如果匹配到多项结果(比如使用了全局匹配g,或者分组),那么每一个匹配结果都将执行一次function函数,并且用该函数的返回值替代源字符串中的匹配项。

用遍历的方法求出flag

s = 'PyvragFvqrYbtvafNerRnfl@syner-ba.pbz'
flag = ''
for i in range(len(s)):
	for j in range(128):
		if (j in range(65,91)) or (j in range(97,123)):
			b = j
			c = j+13
			if j in range(65,91):
				j = 90
			else:
				j=122
			if (j > c) or (j==c):
				j = c
			else:
				j=c-26
			if j == ord(s[i]):
				flag = flag+chr(b)
		elif j == ord(s[i]):
			flag = flag + chr(j)


print(flag)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值