南邮CTF web write up, 题目是按分数从少到多顺序排列,后续有新的体会会更新
签到题
![](https://img.haomeiwen.com/i11818363/77f87d866ad0057a.png)
![](https://img.haomeiwen.com/i11818363/8c7bc4db3ec82f12.png)
签到二
右键查看代码:
![](https://img.haomeiwen.com/i11818363/6cd1232308f4e5ef.png)
可以看到输入框里面对最大长度做了限制,改一下maxlength,输入口令得到flag:
![](https://img.haomeiwen.com/i11818363/dc769099531c8b56.png)
md5 collision
解释题目: md5碰撞 emmm... 好的看代码,已经给了一个字符串了,那就...
![](https://img.haomeiwen.com/i11818363/5d02369a5a2cbe37.png)
![](https://img.haomeiwen.com/i11818363/a588808671c351ac.png)
将a的值代入得到flag:
![](https://img.haomeiwen.com/i11818363/c05987479bc2dc09.png)
单身二十年
![](https://img.haomeiwen.com/i11818363/7f283ef4d39ed80a.png)
点击之后,如下:
![](https://img.haomeiwen.com/i11818363/2d3f4d7771a09005.png)
怎么办呢?burpsuite抓个包?当然可以。
有不用安装软件就能抓包的吗?当然也有,浏览器是无敌的。
让我们打开“开发者工具”——“network”——勾选“Preserve log”,再重新回到web8,点击”到这里找key“
![](https://img.haomeiwen.com/i11818363/bed697955c81bdad.png)
点击,查看response。
![](https://img.haomeiwen.com/i11818363/0e0f5d7cb7011a5d.png)
竟然没有,但是没关系,浏览器是无敌的。让我们来强行查看网页源码
![](https://img.haomeiwen.com/i11818363/c15e623da4bcba4d.png)
tips:view-source://website/target.php
这题不是WEB
![](https://img.haomeiwen.com/i11818363/b40b4b9d794f9547.png)
存图,用VS Code打开,启动hexdump
![](https://img.haomeiwen.com/i11818363/cbbd24670f03e7ce.png)
层层递进
打开,是一个电商网站,查看源码发现有很多文件,打开看看
![](https://img.haomeiwen.com/i11818363/7e680b5b3d66291f.png)
层层打开,最后是一个404文件,打开如下,注释出现flag(竖着看)
![](https://img.haomeiwen.com/i11818363/a733e3286e09026b.png)
文件包含
没错,这就是传说中的LFI (php文件包含漏洞)
伪协议读取文件,拿到以下字符串
![](https://img.haomeiwen.com/i11818363/2da57e11999e42f0.png)
base64在线解密
![](https://img.haomeiwen.com/i11818363/09322aea9b8c146c.png)
COOKIE
题目提示:0==not
那么我们就猜想 1==true, cookie里面也许有0,把它改成1就可以。右键查看源码
果然 cookie如下
![](https://img.haomeiwen.com/i11818363/ae15888e46886568.png)
尝试将login改成1,刷新拿到flag
![](https://img.haomeiwen.com/i11818363/a2db9ca1cd06745e.png)
单身一百年也没用
打开网址 点击“到这里找key” 网页跳转了
![](https://img.haomeiwen.com/i11818363/e07abc880ebefc61.png)
查看原网页的源码,跟单身二十年一样的套路
![](https://img.haomeiwen.com/i11818363/e92fd3e3e263b938.png)
那就让我们继续骚操作,跟着我一起view-source://。。。/index.php
![](https://img.haomeiwen.com/i11818363/40646d26675d0517.png)
还是跳转了???斯国以
![](https://img.haomeiwen.com/i11818363/0d6349464cba7775.png)
没事上面不是还有另外一种方法吗?让我们打开google浏览器的检查,勾选Preserve log 刷新,拿到了
![](https://img.haomeiwen.com/i11818363/399f1e05ec010029.png)
查看一下相应的结果
![](https://img.haomeiwen.com/i11818363/553296306d5e30fe.png)
不要放弃,再看看头,头里面也许有信息呢
![](https://img.haomeiwen.com/i11818363/3dc30a05af7566ec.png)
在相应的消息头里面出现了flag,Crtl+C Crtl+V 提交
php decode
![](https://img.haomeiwen.com/i11818363/cc62a23ebb14e4b6.png)
PHPStorm跑起来(在线网页也可以
![](https://img.haomeiwen.com/i11818363/d0076b63c603323d.png)
将eval改成echo,拿到flag
![](https://img.haomeiwen.com/i11818363/7cfa22f60bd472bd.png)
bypass again
提示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数组如下,拿到flag:
![](https://img.haomeiwen.com/i11818363/d87edc2de594d7df.png)
MYSQL
打开网址,提示robot.txt
![](https://img.haomeiwen.com/i11818363/2797ac7ef60635e3.png)
划重点 sql.php 当id=1024,显示no!try again
![](https://img.haomeiwen.com/i11818363/ef156b059f259a41.png)
尝试打开sql.php
![](https://img.haomeiwen.com/i11818363/b3a0b28bb1f7f5e1.png)
再试试别的id
![](https://img.haomeiwen.com/i11818363/de42113ac21493df.png)
![](https://img.haomeiwen.com/i11818363/19bffcdf02909887.png)
![](https://img.haomeiwen.com/i11818363/5451e73e84acf42a.png)
尝试一下浮点数
![](https://img.haomeiwen.com/i11818363/b33753acb80d16dc.png)
/x00
打开,页面如下:
![](https://img.haomeiwen.com/i11818363/d729d110b25db68b.png)
查找strpos用法
![](https://img.haomeiwen.com/i11818363/603bba1159024574.png)
![](https://img.haomeiwen.com/i11818363/a7b79f4860869f5b.png)
可知当变量nctf里面的字符串包含biubiubiu,能拿到flag。
尝试 nctf[] = biubiubiu
![](https://img.haomeiwen.com/i11818363/8f6ce2fc634cc652.png)
SQL注入1
常规操作 检查源码
![](https://img.haomeiwen.com/i11818363/67dd1d4239870581.png)
打开如下,分析代码可知只有当user是admin时才能拿到flag
![](https://img.haomeiwen.com/i11818363/e758a282ab2fff49.png)
将user改为admin提交
![](https://img.haomeiwen.com/i11818363/3b6dbfdbc4af85c8.png)
重新看代码,变量sql有选择password,把password注释掉, 构造如下
![](https://img.haomeiwen.com/i11818363/2e494b890651c6e4.png)
拿到flag
![](https://img.haomeiwen.com/i11818363/8d856c3a1a8e2a04.png)
SQL注入2
查看source里面的内容
![](https://img.haomeiwen.com/i11818363/4590bb0c856039ad.png)
分析代码,找到注入点,首先username和密码都不能为空,strcasecmp用法:
strcasecmp——比较两个字符串(不区分大小写)
<?php echo strcasecmp("shanghai","SHANGHAI"); ?>
找到显示flag条件
![](https://img.haomeiwen.com/i11818363/c7af5f9dc7f0f96f.png)
尝试union查询,username:username' union select md5(1)# password:1
拿到flag
![](https://img.haomeiwen.com/i11818363/9e6b79a87cf60e2d.png)
![](https://img.haomeiwen.com/i11818363/02acf1f611bea6a6.gif)
网友评论