zoukankan      html  css  js  c++  java
  • CG-CTF wp

    签到题

    F12或者右键查看源码,得到flag

    MD5 collision

    如果经过MD5编码的值是以“0e”开头,则会被认为是科学计数法,不管后面是什么,结果都为0

    QNKCDZO 240610708 s878926199a s155964671a s214587387a s214587387a这些MD5值都为0

    签到2

     打开页面要求输入一串字符,但是长度被限制了,按F12修改maxlength,即可输入完整的字符串

    这题不是web

     查看源码,没有思路。页面里有一张动态图,很可疑,下载后用记事本打开,在最后一行发现flag

    php decode

    对代码进行分析,应该是对题目给出的字符串进行编码,然后依次处理,最后得出flag,但是题目给的是eval()函数,改成echo,得到flag

    文件包含

    题目给出提示:传说中的LFI,进入页面点开链接,发现

    那就利用本地包含读取PHP敏感文件

    得到一串加密了的编码,进行base64解密得到flag

    COOKIE

    打开页面,查看源码,什么也没用,用bp进行抓包试一下

     联想起提示0==not,修改cookie=1,得到flag

    /x00

    对代码进行分析,用get的方式输入nctf的值且必须有数字和#biubiubiu

    但是输入后却发现输出的是第三条(不是很明白),想起题目为/x00,上网搜了一下,ereg()存在漏洞,利用%00可以对正则进行绕过,返回NULL,而NULLFALSE类型不同,所以不满足条件,构造nctf=1%00%23biubiubiu,得到flag

    bypass again

    对代码进行审计,可以利用MD5函数漏洞,当传入的为数组时,返回值为NULL

    也可以传入一个MD5值为0e开头的值,因为这样会被认为是科学计数法,都等于0,所以MD5都相等。

    变量覆盖

     

    这里要说明一下extract()函数,该函数会将数组的键名作为变量名,将键值作为变量名,当变量名有相同的时候会将原来的变量值覆盖,所以只要传入的passthepassword_123相等就行了。

    伪装者

     

    bp抓包,在Header加入XXF头发现没有用,试一下Client-Ip,发现有用

    补充:

    X-Forwarded-For/X-Client-IP/X-Real-IP/CDN-Src-IP,这些都可以对IP进行伪造。

    文件上传

    看题目,让我们上传一个文件,只能上传jpg,gif,png后缀的文件

    再上传后缀为png的文件,又发现必须是后缀名问php的文件

    所以题目要求应该是上传后缀为jpg,gif,png的文件,但是必须被识别为后缀php的文件,所以应该找到它是如何识别的。我们发现它是根据./uploads目录下的basename进行识别的

     

    我在./uploads后面加上1.php,果然如图所示

    所以接下来我在./uploads后面加上1.php%00,%00需要进行url编码

    拿到flag

    sql注入

    进行代码审计,让我们输入user和pass然后在数据库中找到user,如果user是admin则通过,所以我们可以构造$user=admin’)#,将后面直接注释掉,就可以直接返回user

    pass check

    进行代码审计,要求我们用post方式传入pass,然后与pass1进行比较

    我们需要知道的是,strcmp()函数对两个字符串类型进行比较,如果相等的话则返回0,但是如果传入的不是字符串类型则直接返回0,所以通过传入一个数组则可以直接绕过,构造$pass[]=1即可得到flag

    起名字真难

     

    还是进行代码审计,要求$key必须与'54975581388'相等,但是$key字符又不能

    有数字,所以可以通过转换进制的方法实现,那么就只有用十六进制了,所以?Key=0xccccccccc

    密码找回

     

    题目要求重置管理员admin的密码,但是发现在输入框中user不能修改,所以用bp进行抓包,将$user=admin,在把URL中的user1改为admin的base64编码值

    综合题

     

     一大堆奇奇怪怪的东西,先用控制台里的console里跑一下

     

    再访问这个页面

     

    源码里也什么都没有,尝试用bp抓包看一下

     

    得到提示,但是不知道什么意思,上网搜一下

     

     继续访问,然后得到一个下载文件,得到flag

    sql注入2

     

    先查看source

    代码审计,输入正确的user,然后从数据库中调出数据与输入pass的MD5值进行比较,我们可以进行sql注入,$user=’ union select MD5(123)#,用’将之前的代码闭合,那么原语句就变成了

    Select pw from ctf where user = ‘’union select MD5(123);(后面全部变成了注释),然后$pass=123,那么等式就可以成立了

    密码重置

     

    我们先对提示进行分析

    管理员邮箱观察一下就可以找到,那么就观察一下在源代码里面看一下

     

    找到邮箱

    vi编辑器异常退出会留下备份文件

     

     所以我们可以访问.submit.php.swp

     

     对代码进行审计,$token的长度需要等于10,且$token==’0’

    弱类型bypass

     

    所以不需要比较$token和‘0’的类型,等式成立

    file_get_contents

    页面什么都没有,查看源码

     

    关键点在file_get_contents()函数,上网搜一下

     

    所以写入meizijiu

     

     得到flag

     变量覆盖

     

     代码审计,foreach($_get as $key => $value)先对这个函数了解

     

     也就是说遍历数组,将数组的键值赋给$key,将元素的值赋给$value

    然后又将$key的值作为新的变量名

    所以构造$name=meizijiu233,得到flag

     

     

  • 相关阅读:
    用wamp配置的环境,想用CMD连接mysql怎么连
    Mysql删除表
    MySQL创建表
    Leetcode 130. Surrounded Regions
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 110. Balanced Binary Tree
    Leetcode 98. Validate Binary Search Tree
    Leetcode 99. Recover Binary Search Tree
    Leetcode 108. Convert Sorted Array to Binary Search Tree
    Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
  • 原文地址:https://www.cnblogs.com/zesiar0/p/12659131.html
Copyright © 2011-2022 走看看