南邮tip sql.php_南京邮电大学 CTF Write Up
這次來看看某著名大學(xué)——
(Ps:因本人較懶,所以做題時都是手工+度娘,幾乎沒有用到瀏覽器以外的工具,如有更好的辦法,歡迎留言告知~)
Web
簽到題
直接查看源代碼吧。。
key在哪里?nctf{flag_admiaanaaaaaaaaaaa}
Flag:nctf{flag_admiaanaaaaaaaaaaa}
md5 collision
直接給了源碼,來看看
$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來跳出flag,而且還給了個參數(shù)a,那么只需要讓參數(shù)a的值經(jīng)過MD5加密后與字符串QNKCDZO經(jīng)過加密后的MD5值相等就好了。加密后發(fā)現(xiàn)是0E開頭的密文,即PHP解析0E開頭的md5漏洞。詳情參照:?a=s878926199a(自行百度,數(shù)不勝數(shù)),即
簽到題2
口令是11位數(shù)的zhimakaimen,輸入會發(fā)現(xiàn)這個輸入框限制輸入長度為10位數(shù),本人Firefox瀏覽器直接按F12(或鼠標(biāo)單擊右鍵審查元素)找到這一行:
style="background-image:url··· type="password">
maxlength="10"的10改成>=11,再輸入就可以提交口令了。
Flag:nctf{follow_me_to_exploit}
這題不是web
既然不是web,源碼和頭文件也沒有任何提示信息,就把這張圖下載下來,改為txt格式打開,Ctrl+F快速查找,發(fā)現(xiàn)flag在文末。。還真的不是WEB啊
Flag:nctf{photo_can_also_hid3_msg}
層層遞進
沒啥思路。。。就右鍵查看源代碼,跟隨底部鏈接,依次訪nctf{javascript_aaencode}
打開是亂碼,習(xí)慣性用轉(zhuǎn)碼工具(Alt->查看->文字編碼->Unicode)轉(zhuǎn)換一下發(fā)現(xiàn)是一對堆表情,明顯是JS加密,直接F12貼進控制臺跑一下,Flag就出來了~
Flag:nctf{javascript_aaencode}
單身二十年
查看源碼,點擊,Flag直接出來了。。
Flag:nctf{yougotit_script_now}
php decode
因為PHP環(huán)境沒有配置好還是什么原因,據(jù)說eval函數(shù)可以執(zhí)行php代碼,但我將他寫好放進本地根目錄的時候打開會報錯,所以也就沒做留著以后填坑
文件包含
LFI漏洞,自行百度補充。
學(xué)到了一點猥瑣的知識,在服務(wù)器端的.php文件無法直接顯示,用base64加密(read=convert.base64-encode)后拿到密文再解密,就可以看到源碼了。
asdferror_reporting(0);
if(!$_GET[file]){echo 'click me? no';}
$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}
?>
Flag:nctf{edulcni_elif_lacol_si_siht}
單身一百年也沒用
和單身二十年一樣,看源碼,點擊 結(jié)果卻跳轉(zhuǎn)到了
/no_key_is_here_forever.php,猜想是用了重定向,F12查看網(wǎng)絡(luò),就能發(fā)現(xiàn)index.php這個包,果然是302重定向,查看響應(yīng)沒有東西,那么應(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是個什么東西,驗證身份用的對吧?那么然后去看請求包,F12網(wǎng)絡(luò),發(fā)現(xiàn)請求頭和響應(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,按照程序員的思維(不要問為什么,嘿嘿嘿),那么1==yes,改之,出Flag.
Flag:nctf{cookie_is_different_from_session}
MYSQL
按照提示進去robots.txt后轉(zhuǎn)碼看到如下內(nèi)容:
別太開心,flag不在這,這個文件的用途你看完了?
在CTF比賽中,這個文件往往存放著提示信息
TIP:sql.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 "
no! try again
";}
else{
echo($query[content]);
}
}
?>
好了,TIP又出來了,進去sql.php看看,什么都沒有,回來看到這一行
if ($_GET[id]==1024) {
echo "
no! try again
";}
/sql.php?id=1024后提示try again,換到/sql.php?id=1025后提示no more。。雖然不懂原理,但是猥瑣的試了一波/sql.php?id=1024.5,哈哈,成功拿到Flag~
后來才知道重點是這兒
if ($_GET[id]==1024) {
echo "
no! try again
";}
else{
echo($query[content]);
}
要求提交的ID在值上==1024,但又不能是1024,否則就會try again。。任意的小數(shù)都可以~ ~ Wpsec的基友們記不記得某浪想要的998?同一個道理~
/x00
(膜拜大佬,不甘心這道題,看了Writeup惡補一番知識才弄明白,此題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有兩個漏洞
1.%00截斷及遇到%00則默認為字符串的結(jié)束
2.當(dāng)ntf為數(shù)組時它的返回值不是FALSE
所以有兩個方法拿flag
1.令id=1%00%23biubiubiu
2.令nctf為數(shù)組,即nctf[]=1
Flag:nctf{use_00_to_jieduan}
偽裝者
改了X-Forwarded-For沒用,不用改Referer,應(yīng)該是服務(wù)器出問題了,看了writeup后發(fā)現(xiàn)思路也沒錯。。自行補充XFF和Referer和UA在HTTP協(xié)議中的作用吧。。
Header
直接F12看頭文件,Flag就在里面。
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
打開見到
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ù)組,可以繞過,所以在url里加入index.php?a[]=1&b[]=2,即可看到Flag
Flag: nctf{php_is_so_cool}
綜合題
一大堆,是jother編碼,控制臺跑一下出來1bc29b36f623ba82aaf6724fd3b16718.php,貼入URL發(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)某大佬文章.bash_history,貼入url發(fā)現(xiàn)
zip -r flagbak.zip ./*
再次下載,發(fā)現(xiàn)被損壞無法解壓。。常規(guī)思路,改為txt格式發(fā)現(xiàn)Flag~
Flag:nctf{bash_history_means_what}
Re
Hello,RE!
因為工具的不兼容。。RE的題就沒做。。
Pwn
When did you born?
提取碼錯誤。。
Stack Overflow
不會做,留著以后搞~
Crypto
easy!
丟Base64解密,秒出。。
Flag:nctf{this_is_base64_encode}
Keyboard
題目就是鍵盤,看提示也是鍵盤,那么就從鍵盤入手,會發(fā)現(xiàn)形狀是字母areuhack,
題目也說了加上nctf{}。。
Flag:nctf{areuhack}
異性相吸
提取碼錯誤,以后填坑吧
Misc
全部提取碼錯誤。。就先放著吧
總結(jié)
以上是生活随笔為你收集整理的南邮tip sql.php_南京邮电大学 CTF Write Up的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分级聚类方法
- 下一篇: OSChina 周一乱弹 —— 中年少女