web做题记录
2020.1.19 南邮ctf 签到题
题目:key在哪里?
在火狐浏览器中右键选择打开查看源代码,在源代码可以看到如下
因为是第一次做这个题,不知道提交啥,我先提交了“admiaanaaaaaaaaaaa”,其后提交了“flag_admiaanaaaaaaaaaaa”,最后觉得提交的应该带上网站的关键信息,我这才提交了nctf{flag_admiaanaaaaaaaaaaa} (一言难尽)
2020.1.19 南邮ctf 这题不是WEB
题目:
当时看见这个题目我是懵逼的,感觉应该是和那个gif文件有关
,在参考了下面这个知识点后,我尝试打开那个解码网页(但是!!姥姥家的信号是真的差,打不开网页,只能放弃
选择了另存为图片在本地用记事本打开。看到了在一堆乱码中的flag
2020.1.19 南邮ctf 单身二十年
题目:到这里找key
在题目网页中点击“到这里找key”会出现跳转http://chinalover.sinaapp.com/web8/search_key.php一瞬间后闪到http://chinalover.sinaapp.com/web8/no_key_is_here_forever.php
过后在跳转网页中查看网页源代码,没有什么发现,选择用burp suite进行抓包,在http://chinalover.sinaapp.com/web8/no_key_is_here_forever.php时抓包并没有什么发现,后选择退出去在http://chinalover.sinaapp.com/web8/中进行抓包 repeater后得到flag
2020.1.21 南邮ctf 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";}
这是一个php源码的题,首先对@提出了疑问,经过百度后,得到如下结果
然后对isset()函数提出了疑问,经过百度后得到:isset函数用于判断一个变量是否已经声明,且当判断一个变量存在且不为空时 先使用isset函数再使用empty函数
了解后再看代码,发现还是看不懂,才发现是对MD5不明了,搜索后发现是一种加密方式,然后在网上搜索查看了’QNKCDZO’对应的加密结果发现是’0e830400451993494058024219903391’,所以尝试以get方式输入http://chinalover.sinaapp.com/web19/?a=0e830400451993494058024219903391后得到的结果是false。再读源码后发现需要的不是0e830400451993494058024219903391而是另一串未解码前的a,通过下图的提示,搜索以0e开头的以get方式得到的a
如此得到了flag
2020.1.21 南邮ctf 签到题2
题目:
在输入框输入zhimakaimen后,发现页面没有变化。选择了抓包,在抓包后发现如下问题
即是text1的结果不是zhimakaimen 而是zhimakaime
发送到repeater后,对这串数据进行修改并Go得到如下,由此得到了flag
2020.1.21 南邮ctf COOKIE
题目:please login in first (另给出TIP:0==not)
点击网页进入后出现了“please login in first”的字样,因为题目的名字是cookie,便感觉应该与cookie有关,在火狐网页中F12打开存储中的cookie选项,得到如下
发现值为0,有根据题中所给的提示,对值进行修改,将0改为1后,刷新页面,即可得到flag,如图
2020.2.6 南邮ctf 单身一百年也没用
和 “单身二十年”一题非常类似。点击下图连接后,发现链接从http://chinalover.sinaapp.com/web9/到http://chinalover.sinaapp.com/web8/no_key_is_here_forever.php
所以联想到web8,进行抓包,得到flag
2020.2.6 南邮ctf SQL注入1
题目:
首先提交了一下查询,不出意料的错了,点击查看了source,发现了下图,要求user格需要输入admin
直接去尝试(没用到sql注入,但还是去尝试了),当然还是错了,又去看代码,思考密码的要求,网上搜索后,发现了下图的思路
又去看代码发现,下图语句,看出user和pass是一起检测的,所以尝试在输入admin时直接将后面关于密码的部分注释
(#),同时保证注释掉后面的部分后,关于user的部分仍然闭合,执行如下,得到flag
2020.2.16 南邮ctf php是世界上最好的语言
题目进去后就是404 Not Found ,查看源码后没有什么发现,在网上搜了一下说是挂了??
2020.2.16 南邮ctf sql注入2
题目:主要考察union
查看代码,与上一道注入题不同的是,用户名和密码不是一同查询的了,所以直接注释掉密码的方法不可行了,分析代码,(strcasecmp用忽略大小写比较字符串.,通过strcasecmp函数可以指定每个字符串用于比较的字符数,strncasecmp用来比较参数s1和s2字符串前n个字符,比较时会自动忽略大小写的差异)
返回值: |
该函数返回: 0 - 如果两个字符串相等 <0 - 如果 string1 小于 string2 >0 - 如果 string1 大于 string2 |
需要if语句为真才能得到flag,即需要密码不为空且!Strcasecmp($pass,$query[pw])为真,因为两者相等时,值为0,!0即为真,所以需要我们输入的密码与数据库中的密码相等
这时,查看sql语句"select pw from ctf where user='$user'",我们可以通过union查询语句,自己设定密码,即让色块部分失效,又因为密码是md5加密的,那么在数据库中,密码也应该是md5加密的,所以加入我们设定密码为username,那么就需要对username进行加密
执行’union select ‘14c4b06b824ec593239362517f538b29’# 密码输入username,得到flag
参考资料:https://wenku.baidu.com/view/3f3e03c84431b90d6c85c7fb.html
2020.2.16 南邮ctf 起名字真难
题目:源码:<?php
function noother_says_correct($number)
{
$one = ord('1'); //数字1
$nine = ord('9'); //数字9
for ($i = 0; $i < strlen($number); $i++)
{
$digit = ord($number{$i});
if ( ($digit >= $one) && ($digit <= $nine) )
{
return false; //一串数字每一个数字不能是1-9
}
}
return $number == '54975581388';
}
$flag='*******';
if(noother_says_correct($_GET['key'])) //需要与54975581388相同
echo $flag;
else
echo 'access denied';
?>
分析源码,想要得到flag需要函数执行为真,那么分析函数,其中ord表示“将ASCLL码值转换为字符”,根据别人的wp,得知可将54975581388转换成十六进制:0xCCCCCCCCC=54975581388,在url中以get方式输入,即可得到flag
2020.2.23 南邮ctf 文件包含(不是很懂)
题目:没错 这就是传说中的LFI
ok,看不懂是什么意思,搜了一下lfi,是一种漏洞的名字,具体参考https://blog.csdn.net/qq_29419013/article/details/81202358
可以通过构造一个漏洞,来查看需要的代码,即:?file=php://filter/read=convert.base64-encode/resource=index.php ,可以得到如下
进行解码,可以得到如下代码,即可得到flag
<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>
2020.2.23 南邮ctf php decode
题目:见到的一个类似编码的shell,请解码
对源码进行分析,经过搜索得知,
gzinflate是一种解压函数,把这个代码直接拿来运行,不造为什么出现下面的报错
wa,突然发现我好傻。。。echo,哎,把代码改成如下
还是直接运行代码得到flag
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2020.2.1 攻防世界 cookie
题目:你知道什么是cookie吗
在火狐浏览器中,使用F12快捷键,在存储中查看cookie,如下图发现值是cookie.php
将浏览器网页地址改为http://111.198.29.45:44150/cookie.php,得到如下,根据提示,查看网络
点击F12快捷键,在网络中可看到如下,如此可得到flag
2020.2.1 攻防世界 Robots
题目:robots协议
根据提示,本题主要考察robots协议,题目的第一个页面是空白页面在查看网页源代码没有发现后,首先网络搜索robots协议得到
robots协议也叫robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。robots.txt应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用robots元数据(Metadata,又称元数据)。
robots协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。
对此协议有了一定了解之后尝试在网页中查询一个网页的robots协议,即将网址改成http://111.198.29.45:45981/robots.txt即可查看到一个网页的robots协议,得到flag的php
起初,我得到f1ag_1s_h3re.php后,选择直接在http://111.198.29.45:45981/robots.txt后添加/f1ag_1s_h3re.php即:http://111.198.29.45:45981/robots.txt/f1ag_1s_h3re.php 但发现网页出现404,再次思考robots协议后,理解到/robots.txt只是让我们可以查看到网页的robots,但是已经不是原网页,所以将网址修改为http://111.198.29.45:45981/f1ag_1s_h3re.php后,得到flag
2020.2.1 攻防世界 simple_is
题目:小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )
打开题目后没有什么发现,就查看了网页源代码得到如下
这个东西真的时看了半天也没看明白,但代码中有两串数字:
70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65
\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"
第二串数字看着是十六进制,又因为题目给到的提示是flag的格式为Cyberpeace{xxxxxxxxx} 联想到其他的flag答案,利用ASCII码对应将这串数字70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65 转换成字符得到:FAUX PASSWORD HAHA 是错误答案,于是尝试第二串数字
将第二串数字以同样的方式转换得到一串十进制数55,56,54,79,115,69,114,116,107,49,50,将得到的数字参考ASCII码转换成字符得:786OsErtk12
根据题目要求的flag格式得到flag为:Cyberpeace{786OsErtk12}
2020.2.1 攻防世界 backup
题目:寻找备份文件
打开题目后查看了网页源代码,没有发现什么,网络搜索“如何查看php的备份文件”没有收获,就去参考了别人的答案,得到了如下结果,利用http://111.198.29.45:41189/index.php.bak
将该文件下载后查看网页源代码即可得到flag
但是有一个疑问:为什么是http://111.198.29.45:41189/index.php.bak
搜索后得知php.bak文件是有些编辑器在编辑文件时自动备份的文件,用于紧急恢复