zoukankan      html  css  js  c++  java
  • i春秋ctf web1

    我是小白一个,所以从i春秋最简单的题目开始做,在这里做日常笔记!!

    爆破1

    爆破2

    爆破3

    爆破1

    首先可以看到一段代码,

    1、$_REQUEST属于PHP的超级全局变量,PHP $_REQUEST 用于收集HTML表单提交的数据,

    这里的意思就是接受get或post提交的hello并赋予给a变量,

    2、if的条件是a变量的值符合/^W*$/正则匹配的字符,即^从一行的开头开始匹配,$是结束,w是匹配包括下划线的任何单词字符,

    *是前面表达的任意次

    3、如果满足正则匹配就输出$$a变量,$a=hello,$$a=$hello

    4、了解到超全局变量$GLOBALS,用来引用全局作用域中可用的全部变量。这样就会打印出当前定义的所有变量,也包括 include 的文件中的变量,

    flag 也存在在这些变量中。

    5、然后传入参数hello,令hello=GLOBALS,payload为:?hello=GLOBALS

     爆破2

    首先可以看到一段源码

    提示说flag不在变量中,那可能就在注释或者回显中

    var_dump函数是将变量内容输出来之后加上变量的类型,因为最外层是eval函数,说明如果变量内容是命令的话也是可以执行的,

    构造payload:?hello=file_get_contents(‘flag.php‘)

    我们也可以传入一句话,然后用菜单连接查找flag,

    爆破3

     首先还是一段代码

    这里的require与include基本一样,是调用其他php文件进来的函数,require会生成致命错误然后终止脚本

    1、首先创建了一个会话内容,$_SESION 变量用于存储关于用户会话(session)的信息,初始值nums为0,

    time为当前时间,whoami为ea。并且这个会话在120秒之后结束。

    2、通过get或post请求获取到value的参数,然后随机生成两个字母拼接成字符串

    3、如果whoami变量的值是传入value的参数前两位,并且value的md5值的第5个开始长度为4的字符串==0,

    这时num++,这时whoami的值是随机的那两个字母组成的字符串

    4、循环十次然后输出flag

    构造payload:

    在这里因为md5不能处理数组,md5()这个函数参数如果为数组就会返回false,也就是满足 == 0,

    可以利用数组来绕过md5值等于0的条件:?value[0]=e&value[1]=a

    然后就是第一个条件,我们可以手动打,在120秒内来十次也就出来啦,也可以写脚本跑

    1 import requests
    2 url="http://53d7f749ec88496ba93f03712603cc854df8304118f64172.changame.ichunqiu.com/"
    3 s = requests.Session()
    4 h = s.get(url + '?value[]=ea').text
    5 for i in range(10):
    6     h=s.get(url + '?value[]=' + h[0:2]).text
    7     if 'flag{.*}' in h:
    8         break
    9 print(h)

  • 相关阅读:
    [ZROI 9.16模拟赛] Tutorial
    [ZROI 9.15模拟赛] Tutorial
    [USACO 2017 Open Gold] Tutorial
    [USACO 2017 Feb Gold] Tutorial
    [USACO 2017 Jan Gold] Tutorial
    [BZOJ 1208] 宠物收养所
    [BZOJ 1500] 维护序列
    多表查询
    sql查询语句查询顺序
    单表查询
  • 原文地址:https://www.cnblogs.com/qie-date/p/12274938.html
Copyright © 2011-2022 走看看