1. 程式人生 > >BugkuCTF筆記——web

BugkuCTF筆記——web

1.web2

按F12

2.

發現框裡面只能輸一個數字,按F12,把maxlength改成3,再在框裡輸入計算後的正確結果

3.web基礎$_GET

?後面是傳遞的引數。
格式為:網頁?引數名=引數值 

4。web基礎$_POST

和上題類似

5.矛盾

題目

查一下is_numeric函式

則num既不能是數字字元,但是又要等於1

想到用科學計數法表示數字1,既不是純數字,其值又等於1

 6.web3

檢視原始碼發現

KEY{J2sa42ahJK-HS11III}

html解碼即可

7.域名解析

題目:聽說把 flag.bugku.com 解析到123.206.87.240 就能拿到flag

域名解析是把域名指向網站空間IP,讓人們通過註冊的域名可以方便地訪問到網站的一種服務。IP地址是網路上標識站點的數字地址,為了方便記憶,採用域名來代替IP地址標識站點地址。域名解析就是域名到IP地址的轉換過程。】

域名解析需要修改hosts檔案

開啟c:\windows\system32\drivers\etc\hosts

如果提示沒有許可權,可以參考http://www.cnblogs.com/ECJTUACM-873284962/p/8858384.html

修改儲存後

 8.你必須讓他停下

開啟網頁後一直重新整理,用bp抓包,Repeater Go很多次後發現

8.本地包含

include (或 require)語句會獲取指定檔案中存在的所有文字/程式碼/標記,並複製到使用 include 語句的檔案中。

include“flag.php”說明該檔案在本地

    第二句話要獲得hello的值,由於hello為’hello’,所以無論在url欄中對hello賦任何值,都可以接受, 其中var_dump()是將a列印到介面中,在根據eval函式的特性(計算後面括號中的表示式)

根據這一特性,我們嘗試將flag.php檔案直接輸出

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

方法二:

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

    然後查按F12可以知道flag

10.變數1

參考https://blog.csdn.net/Wu000999/article/details/82319921

11.web5

檢視原始碼發現一大堆

([][(![]+[])[+[]]

聯絡題目是js編碼,放到谷歌瀏覽器的控制檯裡執行

16.頭等艙

直接抓包

17.網站被黑

https://blog.csdn.net/qq_26090065/article/details/81571326?utm_source=blogxgwz0

18.管理員系統

檢視原始碼,發現dGVzdDEyMw==,base64得test123

注意題目本地管理員,偽裝成本地訪問

改包:Headers中增添 X-Forwarded-For : 127.0.0.1

19.web4

題目提示檢視原始碼,發現

var p1 = '%66%75%6e%63%74%69%6f%6e%20%63%68%65%63%6b%53%75%62%6d%69%74%28%29%7b%76%61%72%20%61%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%70%61%73%73%77%6f%72%64%22%29%3b%69%66%28%22%75%6e%64%65%66%69%6e%65%64%22%21%3d%74%79%70%65%6f%66%20%61%29%7b%69%66%28%22%36%37%64%37%30%39%62%32%62';
var p2 = '%61%61%36%34%38%63%66%36%65%38%37%61%37%31%31%34%66%31%22%3d%3d%61%2e%76%61%6c%75%65%29%72%65%74%75%72%6e%21%30%3b%61%6c%65%72%74%28%22%45%72%72%6f%72%22%29%3b%61%2e%66%6f%63%75%73%28%29%3b%72%65%74%75%72%6e%21%31%7d%7d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%6c%65%76%65%6c%51%75%65%73%74%22%29%2e%6f%6e%73%75%62%6d%69%74%3d%63%68%65%63%6b%53%75%62%6d%69%74%3b';
eval(unescape(p1) + unescape('%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

20.flag在index裡

參考https://blog.csdn.net/wy_97/article/details/77431111

21.輸入密碼檢視flag

直接爆破

22.點選一百萬次

檢視原始碼,用POST提交clicks=1000000得到flag

23.備份是個好習慣

觀察題目,說備份是個好習慣猜測應該與備份有關

小知識:

    備份檔案一般情況是在後綴名後加的*.swp,*.bak

    http://120.24.86.145:8002/web16/ 預設訪問的是該路徑的index.php檔案

訪問http://120.24.86.145:8002/web16/index.php.bak 得到

整段程式碼的意思是將get的兩個引數中的key替換為空(這裡可以用kekeyy繞過),然後對key1,key2的值進行md5加密,並進行比較,要求key1和key2的md5值相等,但是值不相等,出去flag

繞過方法:md5()函式無法處理陣列,如果傳入的為陣列,會返回NULL,所以兩個陣列經過加密後得到的都是NULL,也就是相等的

24.成績單

在框中一直輸入數字,自導為4時沒有資料顯示

0' union select 1,2,database(),4#
得到資料庫名為    skctf_flag

0' union select 1,2,group_concat(table_name),4 from information_schema.tables where table_schema='skctf_flag'#
得到表名    fl4g,sc

0' union select 1,2,group_concat(column_name),4 from information_schema.columns where table_name='fl4g'#

得到欄位名skctf_flag

0' union select 1,2,skctf_flag,4 from fl4g#

得到flag