CG-CTF web刷题记录

这里刚入门ctf小白一枚 如果有什么地方说错了或者有待改进的地方欢迎指出喔(-w-

1.签到题

KEY在哪里?

在网页源码里~fn+F12查看网页源码收获flag一枚
在这里插入图片描述

2.签到2

打开题目我们看到题目让给我们输入口令:zhimakaimen
可是输入了之后依然报错呢F12看一下网页源代码
在这里插入图片描述在maxlength处限制了我们输入字符的长度 我们将它改成11
在这里插入图片描述
重新输入 “zhimakaimen” 获取flag
在这里插入图片描述

3.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";}

1.变量md51的值是字符串“QNKCDZO"经MD5加密后的值
2.变量a以get方式传入
3.md52的值是变量a经md5加密后的密文
4.我们又看到第二个if判断:当a不等于’QNKCDZO’但是a加密后的值要和’QNKCDZO’加密后的值一样 我们才能拿到flag

这里就涉及到一个 php弱类型的题目
参考资料:php 弱类型总结
== 在进行比较的时候,会先将字符串类型转化成相同再比较

如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行
我们利用在线加密 可以看到字符串经加密是0e开头的(想到科学计数法) 也就是说它在比较的时候会被转换成0 在这里插入图片描述
也就是说只要我们令变量a的值是一个经md5加密后的密文是0e开头的就好了(这样的值在上文给出的链接里面有很多)
在这里插入图片描述

4.bypass again

题目中已经给出提示 依旧是弱类型的题目
点开就可以看到页面的源码

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.';
}
解法1:

同3一样,找两个经md5加密后都是0e开头的字符串
在这里插入图片描述

解法2:

利用fastcoll生成!
1)新建一个md5.txt文件 写入任意内容
2)在cmd中输入指令:fastcoll_v1.0.0.5.exe -p md5.txt -o md51.txt md52.txt
3)散列值生成中
在这里插入图片描述
4)在这里插入图片描述
由于生成的是乱码 我们利用python:

from urllib import parse
result = parse.quote(open('md51.txt','rb').read())
print(result)
result2 = parse.quote(open('md52.txt','rb').read())
print(result2)

在这里插入图片描述

5.这题不是web

显然这是一道图片隐写题在这里插入图片描述解法1:利用winhex查看文件被隐藏起来的数据
winhex下载链接
拉到最下面就可以看到我们的flag啦
在这里插入图片描述
解法2:直接用记事本打开题目的图片
拉到最下面也能看到flag
在这里插入图片描述

6.层层递进

F12查看页面源码 发现可疑路径 SO.html

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值