商城類電商軟件及服務(wù)提供商--HiShop海商,歡迎您!

注冊有禮

HiShop / 新零售 / 新零售專題 / 如何登錄進(jìn)銷存系統(tǒng)?講解SQL注入進(jìn)銷存系統(tǒng)登錄

如何登錄進(jìn)銷存系統(tǒng)?講解SQL注入進(jìn)銷存系統(tǒng)登錄

時間: 2024-10-23 22:33:06閱讀量:
導(dǎo)讀:最新消息報道,如何登錄進(jìn)銷存系統(tǒng)?登錄進(jìn)銷存系統(tǒng)的方式有很多種,下面小編為大家介紹一種用技術(shù)的手段登錄進(jìn)銷存系統(tǒng),SQL注入進(jìn)行登錄。

  最新消息報道,如何登錄進(jìn)銷存系統(tǒng)?登錄進(jìn)銷存系統(tǒng)的方式有很多種,下面小編為大家介紹一種用技術(shù)的手段登錄進(jìn)銷存系統(tǒng),SQL注入進(jìn)行登錄。

如何登錄進(jìn)銷存系統(tǒng)?講解SQL注入進(jìn)銷存系統(tǒng)登錄

  關(guān)于“進(jìn)銷存”系統(tǒng)的登錄方法——利用SQL注入進(jìn)行登錄

  “進(jìn)銷存”系統(tǒng)的登錄存在著SQL注入的漏洞,利用這個漏洞可以繞過用戶名和密碼的判斷,從而進(jìn)入“進(jìn)銷存”系統(tǒng)。下面,對于這個漏洞進(jìn)行具體的說明。

  (注:由于系統(tǒng)源代碼可見,于是可以直接通過代碼來分析SQL注入,因此不在這里進(jìn)行源代碼語句漏洞試探。)

  1、首先打開登錄頁面,找到源代碼地址。

  圖1——登錄頁面的源代碼地址

  2、打開源代碼,找到有關(guān)登錄語句驗證的代碼,代碼如下(重要部分已給出注釋):

  3、由代碼中可以看到,關(guān)鍵的登錄判斷語句為:

  sql="select * from login where(username=' "&nowusername&" ' and pwd=' "&md5(nowpwd)&"') or (bianhao=' "&nowusername&" ' and pwd=' "&md5(nowpwd)&"')"

  這段語句會判斷l(xiāng)ogin表中是否存在輸入的用戶名和密碼,或者用戶編號和密碼。

  下面,提出sql語句進(jìn)行具體分析:

  SQL語句1:

  select * from login where (username=' "&nowusername&"' and pwd=' "&md5(nowpwd)&" ') or (bianhao=' "&nowusername&"' and pwd=' "&md5(nowpwd)&" ')

  可見,where條件有兩大部分,用or進(jìn)行連接(形式為:select * from login where條件1 or條件2)。因此,or后面的語句是否為真不重要,只要前面(條件1)為真即可。

  再拿出前面的(條件1)語句進(jìn)行分析:

  SQL語句2:

  username=' "&nowusername&" ' and pwd=' "&md5(nowpwd)&"'

  由這段代碼中可以看到,此部分又分為兩個條件判斷,用and進(jìn)行連接(形式為:條件1and條件2)。

  4、進(jìn)行SQL注入分析

  由上面的登錄代碼分析可見,如果SQL語句2為真,那么SQL語句1也為真?,F(xiàn)在的問題是如何讓SQL語句2恒為真。

  現(xiàn)在SQL語句2的形式為:條件1 and條件2,根據(jù)SQL語句1的提示,可以看出,如果SQL語句2形式變成:條件1or條件3 or條件4and條件2,那么可見,即使條件2不為真,如果條件1或者條件3有一個為真,那么SQL語句2就為真。

  因此,目的就是要添加or條件3 or條件4到語句中,使SQL語句2恒為真。

  5、SQL注入語句構(gòu)造

  username=’ “&nowusername&” ‘ and pwd=’ “&md5(nowpwd)&”‘

  由前面代碼分析看出,如果輸入登錄名為admin,密碼為12345,運(yùn)行時,此段代碼被編譯為:

  username=’ admin ‘ and pwd=’ admin ‘

  通過編譯后的代碼與后臺數(shù)據(jù)庫進(jìn)行數(shù)據(jù)對比,判斷是否存在該用戶。

  可見,輸入的內(nèi)容首先將被替換為相應(yīng)的sql語句內(nèi)容,再進(jìn)行sql語句的執(zhí)行。

  先假設(shè)一下,如果運(yùn)行時,代碼被編譯為:

  username=’ admin ‘or 1=1 or 1=1andpwd=’ admin ‘

  形式為:條件1or條件3 or條件4and條件2,可見條件3恒成立,因此不論條件1和條件2是否為真,此段代碼恒為真。

  再把源代碼拿出來進(jìn)行對比:

  預(yù)想結(jié)果:username=’ admin ’or 1=1 or 1=1and pwd=’admin ‘

  相關(guān)代碼:username=’“&nowusername&”’ and pwd=’ “&md5(nowpwd)&”‘

  代碼中標(biāo)紅的內(nèi)容是用戶輸入的內(nèi)容,需要注意的是,在標(biāo)紅的內(nèi)容后面有一個’對應(yīng)著前面的’。

  如果輸入的內(nèi)容為:admin’ or 1=1 or 1=1

  代入到標(biāo)紅內(nèi)容,代碼為:

  username=’admin’ or 1=1 or 1=1’ andpwd=’ “&md5(nowpwd)&” ‘

  可見,username=’ admin’為條件1,1=1為條件2,pwd=’ “&md5(nowpwd)&” ‘為條件3,但是需要注意的是1=1后面有一個“’”,是源代碼中存在的,如果在輸入的時候,輸入了一個“’”,那么源代碼中的“’”將缺少對應(yīng)。

  SQL語句3:

  username=’admin’or 1=1 or 1=1’and pwd=’“&md5(nowpwd)&”‘

  可見,如果輸入內(nèi)容為:admin’ or 1=1,將導(dǎo)致內(nèi)容替換代碼后,“’”會缺少一個對應(yīng)。原因就是我們在輸入的時候輸入了一個“’”。因此,為了讓“’”不缺少對應(yīng),我們在輸入的時候再輸入一個“’”。

  輸入內(nèi)容為:admin’ or 1=1’

  這時,再代入到相應(yīng)代碼中,編譯后的代碼為:

  源代碼:username=’“&nowusername&”’ and pwd=’ “&md5(nowpwd)&”‘

  代入后:username=’admin’ or 1=1 or 1=1 ’ ’ and pwd=’ “&md5(nowpwd)&” ‘

  可見,這回“’”已經(jīng)不缺少對應(yīng)了:

  SQL語句4:

  username=’admin’or 1=1 or 1=1’’and pwd=’“&md5(nowpwd)&”‘

  形式為:條件1 or條件2or條件3and條件4

  這時,又出現(xiàn)了一個問題,條件3為:1=1’ ’,這不是正確的條件語句,還要修改一下,改為:

  SQL語句5:

  username=’admin’or 1=1or1=1’’and pwd=’“&md5(nowpwd)&”‘

  刪除1=1使形式改變?yōu)槲覀冃枰模?/p>

  條件1 or條件2or條件3 and條件4

  可見,條件2為:1=1,恒為真,條件3為:’’,是一個不進(jìn)行判斷的空條件。

  因此,SQL語句5因為有條件2恒為真,所以SQL語句5恒為真。

  6、總結(jié)分析

  SQL注入的目的是讓SQL語句1恒成立。

  SQL語句1:

  select * from login where (username=' "&nowusername&"' and pwd=' "&md5(nowpwd)&" ') or (bianhao=' "&nowusername&"' and pwd=' "&md5(nowpwd)&" ')

  如果其中的username=' "&nowusername&"' and pwd=' "&md5(nowpwd)&" '恒成立,那么SQL語句1即恒成立。

  語句中的username='"&nowusername&"' and pwd=' "&md5(nowpwd)&"'標(biāo)紅部分是用戶輸入的內(nèi)容?,F(xiàn)在輸入內(nèi)容:

  ’ or 1=1 or ‘

  替換后為:

  username=‘’ or 1=1 or ‘’ and pwd=' "&md5(nowpwd)&"'

  此語句變?yōu)楹愠闪ⅰ?/p>

  (還可以看出來,如果輸入helloworld’ or 1=1 or ‘,系統(tǒng)一樣可以登錄,原因就是前面輸入的都是條件1的內(nèi)容,無所謂真假,因為1=1的條件恒為真。)

  7、測試結(jié)果:

  登錄名為:’ or 1=1 or ‘

  密碼不為空

  圖2——SQL注入

  點擊登錄,登錄成功。

  8、查看登錄日志:

  登錄日志

  可見,使用SQL注入成功登錄后的用戶標(biāo)識為“-1”,登錄日志頁面的登錄用戶調(diào)用的是rizi表中的username字段,為什么會是“-1”,原因留給大家去思考。

  HiShop友數(shù)進(jìn)銷存系統(tǒng),為了對企業(yè)生產(chǎn)經(jīng)營中進(jìn)貨、出貨、批發(fā)銷售、付款等進(jìn)行全程進(jìn)行跟蹤,管理,而設(shè)計的整套方案。

HiShop友數(shù)專注零售數(shù)字化服務(wù) 專業(yè)為連鎖店提供新零售解決方案,助力連鎖企業(yè)門店網(wǎng)店一體化經(jīng)營

立即聯(lián)系我們

將有專人為你做模式講解、功能演示、專業(yè)答疑等

2024-10-23 最新文章
2024-10-23 熱門文章
新零售關(guān)鍵詞
亮點推薦 更多>
  • 門店數(shù)字化經(jīng)營
    統(tǒng)籌管理
    數(shù)據(jù)同步
    賦能提效
  • 智慧導(dǎo)購賦能
    代客下單
    導(dǎo)購種草
    收銀開單
  • 門店營銷數(shù)字化
    拼團(tuán)砍價
    分銷裂變
    會員儲值
  • 私域增長布局
    社群運(yùn)營
    SOP管理
    會員分層
客戶案例 更多>
  • 廣州酒家線上線下全網(wǎng)全渠道數(shù)據(jù)同步
  • 美心西餅通過“新零售”重構(gòu)“人貨場”
  • 老板電器B2C+O2O的智能家居平臺
  • 愛歡洗以服務(wù)驅(qū)動洗護(hù)業(yè)務(wù)增值

電話咨詢 微信咨詢 - 預(yù)約演示