用py来解答就简单,用socket接收第1个密文几次,发现共同点是3d3d3d开头,长度是32,而且字符集为[0-f],很大可能就是ascii的十六进制,3d3d3d就是===,对base64家族敏感一点的话,就用b32去解密,当然得先把字符串反转一下。
一开始我是提交用b32解密的值,发现wrong,小改几下也是错,在b32这里折腾不过。
最后是先随意提交字符,发现提交的字符数不同,返回结果不同。
当提交的字符数<6,会返回wrong!再返回wrong,please take a retry.
当提交的字符数>=6,就只会返回第2句错误。
所以令我想到提交的结果字符数应该是6以内,而b32解密后长度为8位,8→6,自然地就再测试下b64解密,于是顺利提交了,循环提交50次,即可得到flag。

# -*- coding: utf8 -*-
#>nc ctf10.shiyanbar.com 8887
#

from socket import *
import base64

def D32(secret):
	s=secret.strip().decode('hex')
	s=s[::-1]
	s=base64.b32decode(s)
	s=base64.b64decode(s)
	return s

def getSock():
	sock=socket(AF_INET,SOCK_STREAM)
	sock.connect(('ctf10.shiyanbar.com',8887))

	for i in xrange(0,2):
		s_reply=sock.recv(1024)
		print "<<%s" %s_reply

	s_send='y'
	sock.send(s_send+"\n")
	print ">>%s" %s_send

	s_reply=sock.recv(1024)
	print "<<%s" %s_reply

	for i in xrange(0,50):
		s_send=D32(s_reply)
		sock.send(s_send+"\n")	
		print ">>%s" %s_send

		s_reply=sock.recv(1024)
		print "<<%s" %s_reply
	pass

if __name__ == '__main__':
	getSock()

Flag:

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

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

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

Flag大全地址:所有Flag

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

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