1、签到题
Base64解密
2、取证分析
链接:https://pan.baidu.com/s/1ApHO_UnIzKyK2TDNOxzaEQ 提取码:7fh4
使用vi -r 查看,cat有时也可行
3、图片隐写
题目:
(1)使用Imagej打开该图片
(2)依次选择Process-Math-XOR,XOR值为10011111
(3)依稀发现隐藏的flag,ctrl+shift+T调节颜色,找到flag
4、数据包分析
链接:https://pan.baidu.com/s/16YgHcZKDWPAH53Pyx883Mw 提取码:l545
(1)wireshark打开数据包,导出对象HTTP
(2)发现可以数据包,保存查看获得flag
5、栅栏加密
链接:https://pan.baidu.com/s/1AqnpTLE9Fnf586aVdqmQXg 提取码:w3p6
直接放到网址中:https://www.qqxiuzi.cn/bianma/zhalanmima.php
6、Vi
链接:https://pan.baidu.com/s/1Bhb7kAD2gT_XKp7dJ64c1g 提取码:zagy
直接解密
https://www.guballa.de/vigenere-solver
7、Disk
链接:https://pan.baidu.com/s/1zZ9dx9dx3cm5LYENaUkJdg 提取码:tros
(1)看名字和磁盘有关,进行挂载查看
(2)在挂载的disk目录中发现压缩包,但需要密码
(3)使用unmount disk
卸载磁盘,并使用extundelete恢复文件,命令:extundelete disk1 --inode
2,发现最底下有个被删除的数据(p@ss_wd~)
(4)我们进行恢复,命令:extundelete disk1 --restore-file p@ss_wd~
(5)得到密码后打开加密的压缩包
注:先进行挂载,然后解压里面的压缩包
(6)打开图片发现有三个问号,没有flag
(7)尝试修改图片长度和宽度,将01 90
改为02 90
后保存
(8)再次打开图片,出现flag
8、hssql
(1)抓取post包
(2)使用sqlmap一把梭
9、ssrf
(1)根据提示,找到.index.php.swp文件
(2)vi –r修复swp文件,发现index.php源码
(3)经过代码分析,绕过限制,payload如下
10、RSABD
链接:https://pan.baidu.com/s/1zutDh5uFWSUqGKYNNY8jrw 提取码:tlc2
题目如下:
cipher.txt内容:
0x1055f45639da0fe7ebb355a6f140425fb2d10b74a61860e60cdadc0d205d4905833a20dac9c2e2a873872f1b5d6ac045c996b9136414b8648b6fc821aea718fd4175324fc254bcaeb2cb2065bcf76d1351b483c2caf87a89ed3a3b0933d82466f6d022b728b85db547596509fb8a2d46ee920d306f5d591f50a6ad2c505c9c32e30dcd18faf1500cc1d79b1505dab7ab05943ff9bb4a0de531e9c609a4f5cdb850c611e673f18d89557e46a48bb35e09e10a521c7b45eb3aac85ddb4684b7695815c79b8300f991582b99299a5c28361247e4902da13f267ec7a925de0cd4d2d0ba2a2f47914d8c3b10a1dbc045f74a4d8617dfe0657aec8045deafbe60dd6d7aL
Pubkey.txt内容:
65537
33774167600199691072470424898842928168570559940362770786060699320989546851695106466924163816843729828399984649770900793014896037884774039660562546937090412844276185560384964983508291174867808082182386566813393157054259464108858158903739578119760394228341564696225513954400995543629624209942565369972555679980359992955514826589781286738100616149226885302403505062415492679633217275379153421830105021673417544608398249866398042786421630495968810854036782025120509999022773806069591080190166920079688217334968528641747739241234353918892029263544388161160427668518991666960251381106788899451912317001247537576428186291689
做题时,没有用到题目给的encrypt,用的某大佬的脚本
解题过程如下:
(1)用脚本分解n得到p,q,脚本如下
def gcd(a, b):
while b:
a, b = b, a%b
return a
def mapx(x):
x=(pow(x,n-1,n)+3)%n
return x
n=33774167600199691072470424898842928168570559940362770786060699320989546851695106466924163816843729828399984649770900793014896037884774039660562546937090412844276185560384964983508291174867808082182386566813393157054259464108858158903739578119760394228341564696225513954400995543629624209942565369972555679980359992955514826589781286738100616149226885302403505062415492679633217275379153421830105021673417544608398249866398042786421630495968810854036782025120509999022773806069591080190166920079688217334968528641747739241234353918892029263544388161160427668518991666960251381106788899451912317001247537576428186291689
x1=x2=1
while True:
x1=mapx(x1)
x2=mapx(mapx(x2))
p=gcd(x1-x2,n)
if (p!=1):
print(p)
print(n/p)
break
得到p、q
p:177993461816075408240866752227210319316825574291000376727523991315086097605063837563342286560819823849610146713383370383386260295565108973920944593141677024612114517119831676665456754235233172344362610684938542774386956894066675103840244633202469661725050948177995671009070311486253646420435061175078660441183
q(n/p):189749484366449861630736482622030204229600074936733397229668738586605895979811823994029500725448581332746860468289540041125768726148614579255062994177531727784605194094836998282676712435286273497842956368997116036170165393912022560935791934662695453870846024312915604049805219410140420469163797779129644454583
(2)使用脚本求出d
# coding = utf-8
def computeD(fn, e):
(x, y, r) = extendedGCD(fn, e)
#y maybe < 0, so convert it
if y < 0:
return fn + y
return y
def extendedGCD(a, b):
#a*xi + b*yi = ri
if b == 0:
return (1, 0, a)
#a*x1 + b*y1 = a
x1 = 1
y1 = 0
#a*x2 + b*y2 = b
x2 = 0
y2 = 1
while b != 0:
q = a / b
#ri = r(i-2) % r(i-1)
r = a % b
a = b
b = r
#xi = x(i-2) - q*x(i-1)
x = x1 - q*x2
x1 = x2
x2 = x
#yi = y(i-2) - q*y(i-1)
y = y1 - q*y2
y1 = y2
y2 = y
return(x1, y1, a)
p = 177993461816075408240866752227210319316825574291000376727523991315086097605063837563342286560819823849610146713383370383386260295565108973920944593141677024612114517119831676665456754235233172344362610684938542774386956894066675103840244633202469661725050948177995671009070311486253646420435061175078660441183
q = 189749484366449861630736482622030204229600074936733397229668738586605895979811823994029500725448581332746860468289540041125768726148614579255062994177531727784605194094836998282676712435286273497842956368997116036170165393912022560935791934662695453870846024312915604049805219410140420469163797779129644454583
e = 65537
n = p * q
fn = (p - 1) * (q - 1)
d = computeD(fn, e)
print d
得出d:
11264411788839355592444856301614488363956471904061056255881635805090094375457400203763192894221130759558216953395674955120307575813439598378024263407707436165069943146297428393266768825247731038349979486052262807679509336199267919454932934045527300563698215071335234814155316242621058729891886931914187742084664702392602429806835617468209844338711315548455315452692700616464465563108767921693721150452939650725153874644898636543732854250641129411206109642819488878782249575130672657182665780011560050159281212359222980210472602178746411982328739935093883590670811966243661382699777078747677158108250557964576989602089
(3)用脚本算出明文
n = 33774167600199691072470424898842928168570559940362770786060699320989546851695106466924163816843729828399984649770900793014896037884774039660562546937090412844276185560384964983508291174867808082182386566813393157054259464108858158903739578119760394228341564696225513954400995543629624209942565369972555679980359992955514826589781286738100616149226885302403505062415492679633217275379153421830105021673417544608398249866398042786421630495968810854036782025120509999022773806069591080190166920079688217334968528641747739241234353918892029263544388161160427668518991666960251381106788899451912317001247537576428186291689
c = eval('0x1055f45639da0fe7ebb355a6f140425fb2d10b74a61860e60cdadc0d205d4905833a20dac9c2e2a873872f1b5d6ac045c996b9136414b8648b6fc821aea718fd4175324fc254bcaeb2cb2065bcf76d1351b483c2caf87a89ed3a3b0933d82466f6d022b728b85db547596509fb8a2d46ee920d306f5d591f50a6ad2c505c9c32e30dcd18faf1500cc1d79b1505dab7ab05943ff9bb4a0de531e9c609a4f5cdb850c611e673f18d89557e46a48bb35e09e10a521c7b45eb3aac85ddb4684b7695815c79b8300f991582b99299a5c28361247e4902da13f267ec7a925de0cd4d2d0ba2a2f47914d8c3b10a1dbc045f74a4d8617dfe0657aec8045deafbe60dd6d7aL')
d = 11264411788839355592444856301614488363956471904061056255881635805090094375457400203763192894221130759558216953395674955120307575813439598378024263407707436165069943146297428393266768825247731038349979486052262807679509336199267919454932934045527300563698215071335234814155316242621058729891886931914187742084664702392602429806835617468209844338711315548455315452692700616464465563108767921693721150452939650725153874644898636543732854250641129411206109642819488878782249575130672657182665780011560050159281212359222980210472602178746411982328739935093883590670811966243661382699777078747677158108250557964576989602089
m = pow(c, d, n)
print hex(m)
得出结果:
(4)去掉头尾,即0x和L,复制到Winhex中,注意复制时选择ASCII Hex
得到flag
11、Keyboard
链接:https://pan.baidu.com/s/1v8lB12A5-JEtLqnUrnHu7w 提取码:2e1s
题目中有一个流量包,和一个压缩包,解压缩需要密码
这个流量包,使用wireshark打开
发现这是一个usb的流量包
对照表来获取数据,例:
0c对应的键盘数据为小写i
注:如何区分键盘是大写还是小写呢?
看下图:
还有需要注意的是一定要看第六个数据,其它位置的数据不算键盘输入,例:
最后比对结果为:
由于两次输入CAPS LOCK互相抵消,这里就不显示了
ipaoover1Ohonk$jAeAsjoOFNanlek$3kAisqqJxq3@qFFrfFaasswd
在linux中使用vi在键盘上打出
最后使用密码解压缩,得到flag