某CTF比赛部分wp

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
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41617034/article/details/108752711