這次來(lái)看看某著名大學(xué)——
南京郵電大學(xué)的CTF題目吧~
(Ps:因本人較懶,所以做題時(shí)都是手工+度娘拾稳,幾乎沒(méi)有用到瀏覽器以外的工具吮炕,如有更好的辦法,歡迎留言告知~)
Web
簽到題
直接查看源代碼吧访得。龙亲。
<html>
<title>key在哪里?</title>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<astyle="display:none">nctf{flag_admiaanaaaaaaaaaaa}</a>
</head>
<body> key在哪里悍抑?
</body>
</html>
Flag:nctf{flag_admiaanaaaaaaaaaaa}
md5 collision
直接給了源碼鳄炉,來(lái)看看
$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";}
發(fā)現(xiàn)利用的是MD51=MD52來(lái)跳出flag,而且還給了個(gè)參數(shù)a搜骡,那么只需要讓參數(shù)a的值經(jīng)過(guò)MD5加密后與字符串QNKCDZO經(jīng)過(guò)加密后的MD5值相等就好了拂盯。加密后發(fā)現(xiàn)是0E開(kāi)頭的密文,即PHP解析0E開(kāi)頭的md5漏洞记靡。詳情參照:http://blog.csdn.net/bestlzk/article/details/77994272
那么直接在url后加上 ?a=s878926199a(自行百度谈竿,數(shù)不勝數(shù)),即http://chinalover.sinaapp.com/web19/?a=s878926199a
Flag就貼出來(lái)了摸吠。
Flag:nctf{md5_collision_is_easy}
簽到題2
口令是11位數(shù)的zhimakaimen空凸,輸入會(huì)發(fā)現(xiàn)這個(gè)輸入框限制輸入長(zhǎng)度為10位數(shù),本人Firefox瀏覽器直接按F12(或鼠標(biāo)單擊右鍵審查元素)找到這一行:
<input value="" name="text1" maxlength="10"
style="background-image:url··· type="password">
maxlength="10"的10改成>=11寸痢,再輸入就可以提交口令了呀洲。
Flag:nctf{follow_me_to_exploit}
這題不是web
既然不是web,源碼和頭文件也沒(méi)有任何提示信息啼止,就把這張圖下載下來(lái)道逗,改為txt格式打開(kāi),Ctrl+F快速查找献烦,發(fā)現(xiàn)flag在文末憔辫。。還真的不是WEB啊
Flag:nctf{photo_can_also_hid3_msg}
層層遞進(jìn)
沒(méi)啥思路仿荆。。。就右鍵查看源代碼拢操,跟隨底部鏈接锦亦,依次訪nctf{javascript_aaencode}
打開(kāi)是亂碼,習(xí)慣性用轉(zhuǎn)碼工具(Alt->查看->文字編碼->Unicode)轉(zhuǎn)換一下發(fā)現(xiàn)是一對(duì)堆表情令境,明顯是JS加密杠园,直接F12貼進(jìn)控制臺(tái)跑一下,F(xiàn)lag就出來(lái)了~
Flag:nctf{javascript_aaencode}
單身二十年
查看源碼舔庶,點(diǎn)擊<a href="./search_key.php">抛蚁,F(xiàn)lag直接出來(lái)了。惕橙。
Flag:nctf{yougotit_script_now}
php decode
因?yàn)镻HP環(huán)境沒(méi)有配置好還是什么原因瞧甩,據(jù)說(shuō)eval函數(shù)可以執(zhí)行php代碼,但我將他寫(xiě)好放進(jìn)本地根目錄的時(shí)候打開(kāi)會(huì)報(bào)錯(cuò)弥鹦,所以也就沒(méi)做留著以后填坑
文件包含
LFI漏洞肚逸,自行百度補(bǔ)充。
學(xué)到了一點(diǎn)猥瑣的知識(shí)彬坏,在服務(wù)器端的.php文件無(wú)法直接顯示朦促,用base64加密(read=convert.base64-encode)后拿到密文再解密,就可以看到源碼了栓始。
<html>
<title>asdf</title>
<?php
error_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}
單身一百年也沒(méi)用
和單身二十年一樣务冕,看源碼,點(diǎn)擊 <a href="./index.php"> 結(jié)果卻跳轉(zhuǎn)到了
/no_key_is_here_forever.php幻赚,猜想是用了重定向禀忆,F12查看網(wǎng)絡(luò),就能發(fā)現(xiàn)index.php這個(gè)包坯屿,果然是302重定向俏竞,查看響應(yīng)沒(méi)有東西,那么應(yīng)該在頭文件了鬓长,果然叔收,不出所料~
響應(yīng)頭:
Server: sae
Date: Sat, 13 Jan 2018 08:17:43 GMT
Content-Type: text/html
Content-Length: 0
Connection: keep-alive
flag: nctf{this_is_302_redirect}
Location: http://chinalover.sinaapp.com/web8/no_key_is_here_forever.php
Via: 1566
Flag: nctf{this_is_302_redirect}
Download~!
不能做,留著以后填坑~
COOKIE
先弄明白COOKIE是個(gè)什么東西吠昭,驗(yàn)證身份用的對(duì)吧喊括?那么然后去看請(qǐng)求包,F(xiàn)12網(wǎng)絡(luò)矢棚,發(fā)現(xiàn)請(qǐng)求頭和響應(yīng)頭之間的基情:
Host: chinalover.sinaapp.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Cookie: Login=0
Connection: keep-alive
Upgrade-Insecure-Requests: 1
DNT: 1
Cache-Control: max-age=0
Server: sae
Date: Sat, 13 Jan 2018 08:27:49 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Via: 15146
Set-Cookie: Login=0
Content-Encoding: gzip
cookie:Login=0郑什,題目給的有Tips啊,0==not蒲肋,按照程序員的思維(不要問(wèn)為什么蘑拯,嘿嘿嘿)钝满,那么1==yes,改之申窘,出Flag.
Flag:nctf{cookie_is_different_from_session}
MYSQL
按照提示進(jìn)去robots.txt后轉(zhuǎn)碼看到如下內(nèi)容:
別太開(kāi)心弯蚜,flag不在這,這個(gè)文件的用途你看完了剃法?
在CTF比賽中碎捺,這個(gè)文件往往存放著提示信息
TIP:sql.php
<?php
if($_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]);
}
}
?>
好了,TIP又出來(lái)了贷洲,進(jìn)去sql.php看看收厨,什么都沒(méi)有,回來(lái)看到這一行
if ($_GET[id]==1024) {
echo "<p>no! try again</p>";
}
/sql.php?id=1024后提示try again优构,換到/sql.php?id=1025后提示no more诵叁。。雖然不懂原理俩块,但是猥瑣的試了一波/sql.php?id=1024.5黎休,哈哈,成功拿到Flag~
后來(lái)才知道重點(diǎn)是這兒
if ($_GET[id]==1024) {
echo "<p>no! try again</p>";
}
else{
echo($query[content]);
}
要求提交的ID在值上==1024玉凯,但又不能是1024势腮,否則就會(huì)try again。漫仆。任意的小數(shù)都可以~ ~ Wpsec的基友們記不記得某浪想要的998捎拯?同一個(gè)道理~
/x00
(膜拜大佬,不甘心這道題盲厌,看了Writeup惡補(bǔ)一番知識(shí)才弄明白署照,此題writeup直接拖)
原文
view-source:
if (isset ($_GET['nctf'])) {
if (@ereg ("^[1-9]+$", $_GET['nctf']) === FALSE)
echo '必須輸入數(shù)字才行';
else if (strpos ($_GET['nctf'], '#biubiubiu') !== FALSE)
die('Flag: '.$flag);
else
echo '騷年,繼續(xù)努力吧啊~';
}
這里ereg有兩個(gè)漏洞
1.%00截?cái)嗉坝龅?00則默認(rèn)為字符串的結(jié)束
2.當(dāng)ntf為數(shù)組時(shí)它的返回值不是FALSE
所以有兩個(gè)方法拿flag
1.令id=1%00%23biubiubiu
2.令nctf為數(shù)組吗浩,即nctf[]=1
Flag:nctf{use_00_to_jieduan}
偽裝者
改了X-Forwarded-For沒(méi)用建芙,不用改Referer,應(yīng)該是服務(wù)器出問(wèn)題了懂扼,看了writeup后發(fā)現(xiàn)思路也沒(méi)錯(cuò)禁荸。。自行補(bǔ)充XFF和Referer和UA在HTTP協(xié)議中的作用吧阀湿。赶熟。
Header
直接F12看頭文件,F(xiàn)lag就在里面陷嘴。
Date: Sun, 14 Jan 2018 10:42:18 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Flag: nctf{tips_often_hide_here}
Content-Length: 132
Connection: close
Content-Type: text/html; charset=UTF-8
Flag:nctf{tips_often_hide_here}
bypass again
打開(kāi)見(jiàn)到
if (isset($_GET['a']) and isset($_GET['b'])) {
if ($_GET['a'] != $_GET['b'])
if (md5($_GET['a']) === md5($_GET['b']))
die('Flag: '.$flag);
else
print 'Wrong.';
}
GET可以接受數(shù)組 但md5()不能加密數(shù)組內(nèi)的數(shù)據(jù)映砖,所以令a和b分別為數(shù)組,可以繞過(guò)灾挨,所以在url里加入index.php?a[]=1&b[]=2邑退,即可看到Flag
Flag: nctf{php_is_so_cool}
綜合題
一大堆竹宋,是jother編碼,控制臺(tái)跑一下出來(lái)1bc29b36f623ba82aaf6724fd3b16718.php地技,貼入U(xiǎn)RL發(fā)現(xiàn)被耍了= =逝撬,TIP在頭里,查看頭文件發(fā)現(xiàn)
Server: sae
Date: Sat, 13 Jan 2018 08:47:08 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
tip: history of bash
Via: 1566
Content-Encoding: gzip
百度一波history of bash乓土,發(fā)現(xiàn)某大佬文章http://blog.csdn.net/pan_tian/article/details/7715436,拜讀完后明白有個(gè)東西叫做.bash_history溯警,貼入url發(fā)現(xiàn)
zip -r flagbak.zip ./*
再次下載趣苏,發(fā)現(xiàn)被損壞無(wú)法解壓。梯轻。常規(guī)思路食磕,改為txt格式發(fā)現(xiàn)Flag~
Flag:nctf{bash_history_means_what}
Re
Hello,RE!
因?yàn)楣ぞ叩牟患嫒菰簟1蚵住E的題就沒(méi)做。伊诵。
Pwn
When did you born单绑?
提取碼錯(cuò)誤。曹宴。
Stack Overflow
不會(huì)做搂橙,留著以后搞~
Crypto
easy!
丟Base64解密,秒出笛坦。区转。
Flag:nctf{this_is_base64_encode}
Keyboard
題目就是鍵盤(pán),看提示也是鍵盤(pán)版扩,那么就從鍵盤(pán)入手废离,會(huì)發(fā)現(xiàn)形狀是字母areuhack,
題目也說(shuō)了加上nctf{}礁芦。蜻韭。
Flag:nctf{areuhack}
異性相吸
提取碼錯(cuò)誤,以后填坑吧