第六届上海市大学生网络安全大赛 | Wp
文章目錄
- MISC
- 0x00:簽到
- 0x01:pcap
- 0x02:pcap analysis
- 0x03: 可樂加冰
- Web
- 0x01:千毒網(wǎng)盤
MISC
0x00:簽到
linux運(yùn)行一下即可得到flag
0x01:pcap
提示:請分析附件中的dnp3協(xié)議
具體的協(xié)議介紹可以看師傅的博客
DNP3協(xié)議解析 —— 利用Wireshark對報(bào)文逐字節(jié)進(jìn)行解析詳細(xì)解析DNP3所含功能碼
工控安全入門(四)—— DNP3協(xié)議
一開始以為出題考察的是read,在找參數(shù)object,以及File Data
但協(xié)議中并未出現(xiàn),后來問學(xué)長才知道一般考察這類工控題,基本都是以流量包的形式考察的因?yàn)橛行┉h(huán)境沒有辦法在線上提供,考察的還是傳統(tǒng)的ctf,只不過是換了工控協(xié)議
可以總結(jié)下flag、fl、f各種編碼,把數(shù)據(jù)包的內(nèi)容分長度不同進(jìn)行查看,有的時(shí)候這類題目考察的就是眼力。
這道題的flag便隱藏在每個(gè)長度為91的dnp3流量包中,按照順序進(jìn)行拼接即可
0x02:pcap analysis
這題上去也被秒了,就不用去看協(xié)議了,肯定還是把flag隱藏在流量包中,提示了讓去看Modbus協(xié)議,直接過濾查看,打開第一個(gè)流量包即可看到flag
0x03: 可樂加冰
給了一個(gè)PNG照片,試了很多常見的隱寫都沒有發(fā)現(xiàn)線索,后來隊(duì)里的qwzf拿到了一血,tql,復(fù)現(xiàn)一下,也學(xué)習(xí)學(xué)習(xí)。
binwalk分析一下,有zlib 之前都沒怎么注意過,也可以看一下2018全國大學(xué)生信息安全競賽 picture,也是考察zlib
5B.zilb和2AE96.zlib并沒有什么異常
再來看看2AE96
有些奇怪,復(fù)制出來
內(nèi)容不是十六進(jìn)制,是十進(jìn)制,寫個(gè)簡單的腳本轉(zhuǎn)換一下
翻之前的資料,發(fā)現(xiàn)和jjencode特別像,只不過含有S,把S替換成$再試一下
$.$$$_+$.$__$+$.___+$.__$+$.$$$$+$.$$$_+$.$__$+$.__$+"-"+$.$_$$+$.$_$_+$.$$_$+$.$$_+"-"+$.$__+$.$_$_+$.$$$$+$.$$$+"-"+$.$__$+$.$__$+$.$$_+$._$$+"-"+$.$$_$+$.$_$_+$.$$_$+$.$___+$.__$+$._$_+$.$$$$+$.$_$+$.$$_+$._$_+$.$__+$.$$_$但發(fā)現(xiàn)解不了,查看了jjencode的作者提供的編碼測試頁,發(fā)現(xiàn)需要套上alert,它的格式是固定的
alert("") alert('1emon')
知道規(guī)律了,把上面得到的內(nèi)容復(fù)制進(jìn)去即可,前后連接的+號不能忘
Web
0x01:千毒網(wǎng)盤
這個(gè)題有源碼泄露
在code.php文件中發(fā)現(xiàn)sql語句,做題的時(shí)候沒有觀察到index.php文件中的變量覆蓋,一直以為是要繞過單引號,然后進(jìn)行SQL注入得到flag。
這題路沒走通只能去看index.php頁面,發(fā)現(xiàn)
查了下發(fā)現(xiàn)和之前的一道CTF比較類似,考察的是變量覆蓋
foreach(array_expression as $value) 遍歷給定的 array_expression 數(shù)組。每次循環(huán)中,當(dāng)前單元的值被賦給 $value 并且數(shù)組內(nèi)部的指針向前移一步
foreach(array_expression as $key => $value) 除了當(dāng)前單元的值以外,鍵值也會(huì)在每次循環(huán)中被賦給變量 $key
本地測試一下:
第一層foreach里,$__key就是_GET, _POST, _COOKIE,加上一個(gè)$就變?yōu)?_GET, $_POST, $_COOKIE
<?php foreach(array('_GET','_POST','_COOKIE') as $key){ echo "\$\$key<br>"; print_r($$key); echo "<br>"; foreach($$key as $key_2 => $value_2) {echo "\$\$key_2<br>"; print_r($$key_2);echo "<br>";echo "\$value_2<br>";print_r($value_2);echo "<br>"; var_dump($$key_2==$value_2);echo "<br>"; } }
第一次循環(huán)如果是以_GET傳入的話,最終得到的結(jié)果是false,試試以_POST傳入
unset($$__key2)把$_POST變量銷毀了,所以就不會(huì)觸發(fā)filter函數(shù),因?yàn)檫€沒進(jìn)waf函數(shù)POST就被unset了
接下來繼續(xù)執(zhí)行
執(zhí)行之后$_POST變量就又回來了,可以在本地測試一下
<?php foreach(array('_GET', '_POST') as $key) {if($$key) { foreach($$key as $key_2 => $value_2) { if(isset($$key_2) && $$key_2 == $value_2) unset($$key_2); }}} echo "before<br>"; echo "GET:<br>"; var_dump($_GET); echo "<br>"; echo "POST:<br>"; var_dump($_POST); echo "<br>";if($_GET) extract($_GET, EXTR_SKIP); if($_POST) extract($_POST, EXTR_SKIP);echo "<br>"; echo "<br>"; echo "after<br>"; echo "POST:<br>"; var_dump($_POST);
執(zhí)行extract()之前,$_GET數(shù)組的鍵名是_POST,$_POST數(shù)組則不存在,$_GET數(shù)組的鍵名是_POST,所以也就是導(dǎo)入了名為_POST的變量,也就是$_POST變量,所以$_POST成功被還原
接下來測試一下payload,發(fā)現(xiàn)可以繞過去
使用聯(lián)合查詢注入方式看看,判斷列數(shù)
爆數(shù)據(jù)表
爆出字段值
爆值
總結(jié)
以上是生活随笔為你收集整理的第六届上海市大学生网络安全大赛 | Wp的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一周刷题记录 | WebMisc
- 下一篇: 小型PHP论坛搭建