1. 程式人生 > 實用技巧 >Bugku-web指南

Bugku-web指南

bugku靶場

web

web1

https://segmentfault.com/a/1190000016750234

知識基礎

涉及到的幾個函式:

1.$_REQUEST: 可以獲取以POST方法和GET方法提交的資料,但是速度比較慢

2.eval: 把字串按照 PHP 程式碼來計算,該字串必須是合法的 PHP 程式碼,且必須以分號結尾。

<?php
eval("echo'hello';echo' world';");
?>
# output
hello world

3.var_dump: 函式用於輸出變數的相關資訊

# 數字
var_dump(1); > int(1)
# 字串
var_dump("string"); >  string(6) "string"
解題思路

eval應該是此題的突破口,能夠執行php程式碼。

hello是接受引數的變數,接下來就是構建hello變數,使其能夠閉合var_dump,利用print_r輸出

首先閉合var_dump: 1)";

第二步構建print_r:print_r(file("./flag.php"));

URL構建結束:

http://123.206.87.240:8003/index.php?hello=1);print_r(file("./flag.php")

構建的URL觸發的 eval操作為

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

成功輸出 flag.php 檔案內容

web2

這題考爆破密碼

web3

這題原始碼有問題

知識基礎 PHP自動化的全域性變數:**$GLOBALS** — 引用全域性作用域中可用的全部變數,一個包含了全部變數的全域性組合陣列。變數的名字就是陣列的鍵
解題思路

正則表示式"/^\w+$/",匹配字串,\w表示字元+數字+下劃線{ a-z,A-Z,_,0-9 }。如果不匹配會輸出 ‘’args error!‘’\

兩個`/``/`表明正則表示式的開始與結束,`^`開始字元,`$`結束字元,`+`代表可以有一個或多個`\w`

PHP中變數可以當作另一個變數的變數名:$$args,結合第一句flag In the variable !

所以構造payload:URL?args=BLOBLAS

即可爆出所有args,其中包含flag

web4

知識基礎

通過抓包修改file值的辦法去執行一些本來不該執行的檔案

也可以通過此方法直接輸出一些敏感的配置檔案和遠端包含shell(需要目標主機開啟allow_url_fopen)

解題思路

通過構造如下語句:

http://xxx.com/index.php?file=php://filter/read=convert.base64-encode/resource=xxx.php

就能獲得xxx.php的程式碼的base64加密結果,通過base64解密後便可獲得xxx.php的程式碼

web5

知識基礎 這題不難,看php語言都會了
解題思路 ``` $what=$_GET['what']; echo $what; if($what=='flag') echo 'flag{****}'; ```
http://xxx.com/?what=flag

web6

知識基礎 ``` $what=$_POST['what']; echo $what; if($what=='flag') echo 'flag{****}'; ```
解題思路 很明顯這個是post請求

web7

知識基礎 > JavaScript是一種屬於網路的指令碼語言,已經被廣泛用於Web應用開發,常用來為網頁新增各式各樣的動態功能,為使用者提供更流暢美觀的瀏覽效果。通常JavaScript指令碼是通過嵌入在HTML中來實現自身的功能的。 > jother是另類的javascript工具 > 一堆+!的東西就用jother解碼 > 可以開啟谷歌瀏覽器 按F12 > 然後console將那堆解碼的東西複製過去 按回車即可解碼 >
解題思路 多看原始碼,我也不知道這是什麼鬼

copy到console

顯示"ctf{whatfk}"

得到flag

web8

知識基礎
php
$num=$_GET['num'];//GET方式獲取引數
if(!is_numeric($num))//is_numeric()函式是判斷是否為數字或者數字字串
{
echo $num;
if($num==1)//矛盾既要是1又要不是數字
echo 'flag{**********}';
}
解題思路 構造num=1X X還可以是任何字母或者字串,構造url:http://xxx.com/get/index1.php?num=1xx

得到flag

web9

知識基礎

1

解題思路

1

web10

知識基礎

1

解題思路

1

web11

知識基礎

1

解題思路

1

web12

知識基礎

1

解題思路

1

web13

知識基礎

1

解題思路

1

web14

知識基礎

1

解題思路

1

web15

知識基礎

1

解題思路

1

web16

知識基礎

1

解題思路

1