web1 右键查看源代码

右键查看源码,即可发现

web2 图片也可以存信息

打开之后发现只有图片,我们右键保存到本地记事本打开,发现了flag

web3层层递进


没啥思路,展开元素看看,发现了 隐藏网页,打开看看源码

发现了flag

web4

Not Found

web5

有页面看不出来

web6 sql注入

  $user = $_POST[user];$pass = md5($_POST[pass]);$query = @mysql_fetch_array(mysql_query("select pw from ctf where user='$user'"));if (($query[pw]) && (!strcasecmp($pass, $query[pw]))) {echo "<p>Logged in! Key: ntcf{**************} </p>";

这里的$pass和$user都可控制;我们这里可以考虑union联合查询

' union select md5(1) -- q

本地测试辅助理解:

这样我们就可以控制查询出的结果是1的md5值了,然后$pass=1就行le
分析代码,这里就是sql注入单引号和小括号的闭合,在账号那里写,密码用md5了

') or 1=1 – q
这就成了

web7PHP伪协议

这个题要用php伪协议
用php://input 还不行
我们可以
php://filter参数详解

该协议的参数会在该协议路径上进行传递,多个参数都可以在一个路径上传递。具体参考如下:

参数 描述
resource=<要过滤的数据流> 必须项。它指定了你要筛选过滤的数据流。
read=<读链的过滤器> 可选项。可以设定一个或多个过滤器名称,以管道符(*\ *)分隔
write=<写链的过滤器> 可选项。可以设定一个或多个过滤器名称,以管道符(\ )分隔。
<; 两个链的过滤器> 任何没有以 read= 或 write= 作前缀的筛选器列表会视情况应用于读或写链。

eg:
php://filter/read=convert.base64-encode/resource=[文件名]读取文件源码(针对php文件需要base64编码)
参考这位同志的文章这里

继续我们写这个读取源码?file=php://filter/read=convert.base64-encode/resource=index.php
把base64解码出来即使源代码
php文件无法在前端直接显示出来将php文件转换成base64编码,解码后即可看到php文件源码。

<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>

web8 单身手速1

点击超链接之后发现有一个转瞬即逝的source.php
开启抓包试试吧

返回包里就有flag
根据返回包里显示他是返回的js代码跳转的,我们也可以禁用js,就直接能拿flag了

web9单身手速2

差不多一样的题,这个只是直接藏在返回的头里

web10请先登入


点进去发现又让我们先等人,和登入相关的我们可以考虑cookie
开启burpsuite抓包,发现cookie:login=0

flag:nctf{cookie_is_different_from_session

web11 robots.txt

刚点进来就提示让我们看robots.txt
我们看看这个文件(精简了下代码 )

TIP:sql.php<?php$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]);}
}
?>

intval() 函数用于获取变量的整数值。



这里1024前后我们发现都是无用信息,代码里写到是传参=1024就不行,不等于1024就能输出content了,但是我们又得满足查询的ID=1024,刚好有个intval的函数能取整帮我们取出1024

web12 - 跟随你的梦想


这个页面我没有直接找到源码,我上网参考别的文章沾出来的代码做的

<?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() 函数返回字符串的首个字符的 ASCII 值。
分析一下代码,这里是传参key然后用了自定义函数处理;函数就是拿了key的每个字母的ASCII是不是介于1-9之间,如果再就返回0,如果不在这个范围,就那个key的值判断登不等于54975581388
做法:PHP的==是不会比较两侧的类型的,既然这里他不让传参数字,那我们还得等于那一串,那我们就传参16进制的

?key=0xccccccccc

web13修改密码


发现账号我们改不了啊,我们抓个包

web14 token


查看源码就发现了admin的邮箱
这个站我们写个大写的Web14就不能访问了,判定应该是linux
linux vi编辑不正常退出时会产生filename.xxx.swp文件,可能有相关信息,我们可以试试看

下面的if里可以看到,要判定token如果不是0就退出,不是10位就退出,我们试试0000000000

web15 魔术引号

get_magic_quotes_gpc — 获取当前 magic_quotes_gpc 的配置选项设置 magic_quotes_gpc
当magic_quotes_gpc=On的时候,函数get_magic_quotes_gpc()就会返回1
当magic_quotes_gpc=Off的时候,函数get_magic_quotes_gpc()就会返回0
magic_quotes_gpc=On的情况下,如果输入的数据有单引号(’)、双引号(”)、反斜线()与 NUL(NULL 字符)等字符都会被加上反斜线。这些转义是必须的,如果这个选项为off,那么我们就必须调用addslashes这个函数来为字符串增加转义。
stripslashes() 函数删除由 addslashes() 函数添加的反斜杠。

htmlentities($str, ENT_QUOTES)这个函数会转换双引号和单引号。


这代码表示出来就这个样,然后mysql执行这个句子
我们在变量里的任何传参都会加上
我们尝试打破原结构
?username=admin&password= or 1-1 – q
这样的话,\和admin后的’->’
而在mysql里’是不参与闭合
于是我们就把 这一块包裹起来了

web16 sql注入

看源代码没看出来有括号的闭合
不过确实加了括号就可以,感觉是代码放错了
') or 1=1 – q
Key: ntcf{pass_the_exam}

web17 md5处理不了数组

<?php
var_dump(md5($_GET['a']));var_dump(md5($_GET['b']));
if(md5($_GET['a']) == md5($_GET['b']))echo 'success';
?>


md5处理不了数组类型的东西,而且回返回null值

<?php
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.';
}
?>

我们观察源代码发现,这里要求你输入的传参不能相等,但是我们下面还得md5之后相等,于是我们就可以写一个a[]=1&b[]2来绕过了

web18变量覆盖

该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。
该函数返回成功设置的变量数目。
extract这个函数可以把输入的数组按照键名和键值转换成变量
例如:
pass=1&thepassword_123=1
就会变成$pass=1 $thepassword_123=1
于是我们这里就实现了变量覆盖
把前面他定义好的 thepassword_123给覆盖了
nctf{bian_liang_fu_gai!}

web19请输入a


别的地方看到的代码,我是内有直接找到…

输入a,但是我输入a就出错
变量md51的值是经过md5加密的字符串QNKCDZO,字符串QNKCDZO经过md5加密之后的值为:0e830400451993494058024219903391。之后的变量a,分析源代码可知,如果a的值不为QNKCDZO,并且md5的值也为0e830400451993494058024219903391,则会输出flag。根据之前的了解,不过好像除了QNKCDZO,并没有其他字符串的md5值为0e830400451993494058024219903391。再回头看源码,注意到判断md51和md52是否相等的时候,使用$md51 == $md52,这里使用的是 == 而不是 === ,也就是说md51和md52不需要完全相等。

拓展:一个数字和一个字符串进行比较,PHP会把字符串转换成数字再进行比较。PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。例如:123abc转换后应该是123,而abc则为0,0==0这当然是成立的啦!所以,0 ==’abc’是成立的。当有一个对比参数是整数的时候,会把另外一个参数强制转换为整数。

这个题目也是这个原理,如果你提前知道md5碰撞的概念,同时知道了在php中md5中的0e的比较,这道题目就非常简单了。

如果md的值是以0e开头的,那么就与其他的0e开头的md5值是相等的
————————————————
参考:https://blog.csdn.net/qq_38603541/article/details/97125995
常见md5碰撞

web20

notfound

web21请输入密码!

我们在url栏发现输入没效果,我们试试post
发现可以,确实是post
strcmp
比较两个字符串(区分大小写):
0 - 如果两个字符串相等
<0 - 如果 string1 小于 string2
>0 - 如果 string1 大于 string2
传入的期望类型是字符串类型的数据,但是如果我们传入非字符串类型的数据的时候,这个函数将会有怎么样的行为呢?实际上,当这个函数接受到了不符合的类型,这个函数将发生错误,但是在5.3之前的php中,显示了报错的警告信息后,将return 0 !!! 也就是虽然报了错,但却判定其相等了。这对于使用这个函数来做选择语句中的判断的代码来说简直是一个致命的漏洞,当然,php官方在后面的版本中修复了这个漏洞,使得报错的时候函数不返回任何值。但是我们仍然可以使用这个漏洞对使用老版本php的网站进行渗透测试

网站我直接没看到源码按钮,右键也看不到啊,从别的参考文章copy过来的,是网站源码接口没了吗

<?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!";
}
?>

post的地方写个pass[]=1数组就行了
flag:nctf{strcmp_is_n0t_3afe}

web22 google

Referer: https://www.google.com/
我为啥拿不到flag啊,没反应,估计是挂了

web23 meizijiu


file_get_contents() 把整个文件读入一个字符串中。
php://input 可以访问请求的原始数据的只读流,在POST请求中访问POST的data部分

感觉挂了,什么都不显示

web24 键值分离

利用$$

web25

啥也没有,空白

web26

Not Found

web27

Not Found

web28

南京邮电大学2021年CTF相关推荐

  1. 南京邮电大学计算机学硕2021,南京邮电大学2021年硕士研究生拟录取名单

    2021考研复试工作,已经大部分招生单位进入了尾声.目前有些学校公示出研究生拟录取名单.因此,参加完2021考研复试考生们,一定及时关注目标学校公告.下面,小编为大家给出--南京邮电大学2021年硕士 ...

  2. 南邮计算机2021进面分数,南京邮电大学2021年硕士研究生复试分数线+调剂信息汇总...

    南京邮电大学硕士研究生招生办近日公布了今年硕士研究生复试各学院的分数线,调剂专业计划数量,以及复试录取方法.包含了复试时间,复试内容等信息.麦麦下面就简单汇总了下.方便各位报考的考生参考. 注意下今天 ...

  3. 南工计算机调剂,南京工业大学2021年硕士研究生调剂公告

    一.申请条件 1.申请调剂考生需符合<教育部关于印发<2021年全国硕士研究生招生工作管理规定>的通知>(教学函( 2020 )8号)要求. 2.非全日制硕士研究生需以定向就业 ...

  4. 微型计算机 持续更新,2020年南京邮电大学810《微机原理及应用》硕士研究生入学考试大纲...

    国各省市院校2020年硕士研究生考试大纲汇总(持续更新中)>>> 2020年国硕士研究生入学考试命题标准大纲已于7月8日正式公布,接下来国各研招院校将陆续发布2020考研专业课大纲. ...

  5. 南京邮电大学2013年硕士研究生招生复试及同等学力加试参考书目

    南京邮电大学2013年硕士研究生招生复试及同等学力加试参考书目 参考书目 来源:中国考研网 2012-10-10 相关院校:南京邮电大学 2018年考研专业课复习资料 历年真题-笔记讲义-复习题模拟题 ...

  6. 南京邮电大学CTF-密码学-骚年来一发吗

    南京邮电大学CTF-密码学-骚年来一发吗 看到了很多关于这道题目求解的博客,都是用PHP求解的,而我想用Python来求解 题目如下: 加密过程: 翻转字符串-字符对应的ASCII码加1-base64 ...

  7. 南信与南邮谁的计算机专业更强,南京信息工程大学和南京邮电大学,谁更强!网友:“不相上下”!...

    遍数全国的名校中,南京地区的名校不在少数.仅仅是985高校就有南京大学和东南大学两所,211院校也有南京航空航天大学.南京理工大学.南京师范大学.南京农业大学.河海大学.中国药科大学等不少知名高校. ...

  8. 南京邮电大学计算机应用基础,南京邮电大学20102011学年第二学期计算机应用基础能力考.doc...

    南京邮电大学20102011学年第二学期计算机应用基础能力考.doc 南京邮电大学2010/2011学年第二学期计算机应用基础能力考核安排表 地 点:仙林校区教2西计算中心(A.B.C机房) 2011 ...

  9. 南邮考研计算机组成原理真题,南京邮电大学408计算机学科专业基础综合(含数据结构、计算机组成原理、操作系统和计算机网络)考研资料...

    考研复习资料选择很重要,是决定你是否考研成功的关键!历年南京邮电大学408计算机学科专业基础综合(含数据结构.计算机组成原理.操作系统和计算机网络)考研成功学员所使用复习资料汇总: 南京邮电大学408 ...

最新文章

  1. 一个红 - 黑树的具体描述
  2. Go中的Socket编程
  3. python flask源码解析_浅谈flask源码之请求过程
  4. python progressbar print_python print 进度条的例子
  5. android qq登录 获取用户信息吗,免登录 只需要一个QQ号就能获取QQ头像和QQ昵称 获取QQ用户信息API...
  6. eclipse中对于Java虚拟机参数的设置与思考
  7. 精选 26 个 Python 实用技巧,想秀技能先 Get 这份技术列表!
  8. 作为程序猿----别说你不知道的人物!
  9. 微信公众平台可为市民鉴别万余药品真伪
  10. 猝不及防,iOS9.3测试版已经遭到越狱?
  11. SQL语句查询今天、昨天、近7天、近30天、一个月内、上一月 数据
  12. C语言标准库函数大全(ctype、time 、stdio、stdlib、math、string)
  13. pythontkinter教程_Tkinter简明教程
  14. wince车机刷carplay_WINCE 使用 CarPlay,老唐开新花
  15. MYMPS蚂蚁分类信息系统源码,5.9E多城市全开源版本
  16. 前端,计算中四舍五入保留两位小数操作3中方法
  17. Knowledge-based Systems期刊投稿经历
  18. Windows 系统封装
  19. table表格标签css固定最后一列方案
  20. opencv学习(三十六)图像直方图均衡化equalizeHist

热门文章

  1. 数据结构的逻辑结构和物理结构的基本概念
  2. 蓝桥杯——BASIC-3——基础练习 字母图形
  3. tracert traceroute查看网络路由
  4. Spark视频教程免费下载
  5. 基础知识 - Unicode码
  6. CSDN博客添加加QQ好友按钮
  7. 信息安全服务资质认证CCRC证书‖中国网络安全审查技术与认证中心
  8. 快速重新安装打印管理器
  9. C语言程序设计知识必备pdf,c语言程序设计复习知识总结.pdf
  10. java特殊字符转义html_HTML特殊字符转义