CSAW 2013 WidgetCorp撰写 OS

admin 2019-8-16 166

2013年CSAW CTF的“WidgetCorp”挑战是一个非常简洁的Web开发问题。这是一个挑战,我非常兴奋地完成整个事情(并非总是如此!)

它是淡蓝色,因为我解决了它,但你得到了要点。没有提供关于期待什么的信息/评论,所以你在这里盲目。

这是该网站主页的图片:

非常漂亮,几乎10分钟的CSS工作

有意思,看起来像一个很好的拼凑网站呃?

Selection_005

在我们的主页上,一旦我们登录,我们有以下选项:

检查我们的小部件

制作一个新的小部件

查看新功能(登出页面的链接,也是幽默的尝试)

好的,让我们制作一个小部件!

Selection_006

 

好吧,看起来不错。提交此页面后,我们会得到:

Selection_007

所以我们制作了一个ID为7574的新小部件 - 让我们现在看一下。

Selection_008

太棒了,所以我们可以选择查看/编辑我们新创建的小部件。让我们来看看:

Selection_009

正如所料,我们有一个页面,我们可以查看我们的小部件细节。此页面的URL如下所示:

Selection_010

显然,id = 7574表明我们正在查看ID为7574的小部件(正如我们之前看到网站告诉我们的那样)。

现在任何好的黑客都会尝试下一步转到此URL:

Selection_011

遗憾的是,我们得到了一个:

Selection_012

嗯,你在期待什么?

所以他们在显示信息之前检查我们是否拥有小部件。但他们是如何做到的呢?

Selection_017

 

在任何类型的网络审核过程中都应始终检查Cookie,它们通常会被遗忘或无法安全编码。

好的,我们有以下cookie:

PHPSESSID,这是PHP做cookie的方式。

widget_tracker,一个我立刻认为是base64编码值的有趣字段

widget_validate,一些看似很长的字符串(长度为128个字符 -  nudge  nudge)

我们先检查一下widget_tracker值吗?

YToxOntpOjA7aTo3NTc0O30%3D

**所以我们解码url编码的字符串:

YToxOntpOjA7aTo3NTc0O30 ==

哦,我的双重等号让我每次都笑!(几乎总是意味着base64编码!)

Base64解码该值给了我们:

一个:1:{I:0; I:7574;}

那是什么?!有人搞砸了JSON吗?不,实际上它是PHP序列化功能。我马上得到它因为我在PHP中做了很多编程。基本上它就像JSON编码,你将数组转换成字符串。

那么让我们编写脚本:

Selection_019

这将使我们能够更好地了解正在发生的事情。

Selection_020

很有趣,所以我们看到它是我们创建的一系列小部件!因此,我们可以简单地反转此函数以创建有效的cookie值,从而绕过身份验证。

还没做完!那个其他值widget_validate怎么样?

现在这个我从经验中知道这是一个SHA-1哈希(根据它的长度/字符集,如果你需要找出一个哈希类型,请参阅  https://code.google.com/p/hash标识符/)

但是什么是哈希?用户名?我们的PHP会话ID?

所以我通过简单地监控正在使用的cookie来解决这个问题。黑客真的就像成为一名科学家......

看起来像集中科学!

看起来像集中科学!

所以我所做的只是在widget_validate cookie值发生变化时观察,这样我就可以看到模式并希望确定他们如何进行授权。

Selection_022

单调乏味但收益率高!

所以我有多种关于他们是如何做到这一点的理论,但我基本上注意到,无论何时我添加了一个小部件,cookie值都会改变(在我查看新小部件之后)。

通过这种方式,我知道  widget_validate cookie正在根据我创建的小部件进行更改。

经过一些测试后,我发现该值很简单,是序列化小部件数组的SHA-1哈希值(a:1:{i:0; i:7574;})。

好的,现在让我们把它翻译成一些代码:

Selection_023

因此,此代码将生成一个有效的cookie来查看我们想要的任何小部件。基本上,您使用所需的小部件ID和有效的PHP会话ID来调用它,它将自动为您构建cookie。

所以这是一个简单的函数,它可以获取我给它的任何页面,这个函数也有“generate_legit_cookies”函数,因此它会自动生成相应的cookie等。

Selection_024

 

我最终创建了一个脚本,可以查看每个人的小部件并输出他们的值,这是一个很大的错误。这么多脚本kiddy输入值(人们运行Acunetix,自动化工具)。

这是该输出的有趣截图  :

Selection_029

这么大的错误,幸运的是,当我为ID输入一个空值并从网站上获得SQL错误时,我在某些时候搞砸了我的代码。

Selection_026

所以我得到了它作为输出,它立即点击了我,我们正在通过cookie进行  SQL注入。这是我一直想做的事情(我认为安全书呆子有不同的梦想)。

现在,我一步一步地手动完成了这个,但是我将在这篇博文中展示一个更好的方法。我赢得之后的更好的想法是我将继续在这里,因为它将为这样的未来问题传达一个好主意。

我的想法就是简单地制作我的脚本:

Selection_030

 

所以基本上我做了一个PHP脚本,作为我想要的任何SQL注入工具的伪代理。我只是告诉我的工具我注射的网站是  http://127.0.0.1/widget_wut.php?id=1。PHP脚本只返回http://128.238.66.224/widget_list.php的输出 我想你会称这是一个“混合脚本kiddy”因为PHP脚本只是为你的SQL工具做了所有的cookie疯狂使用。

所以这里有PHP脚本:

Selection_032

Selection_031

所以希望这能让我更加清楚我在这里做什么,但我会继续不管(我的大脑是从CTF不断播放的,也许我会稍后回来并清理它)。

所以在此之后我将sqlmap指向这个本地页面:

Selection_033

我的输出:

Selection_034

所以它工作正常,让我们得到数据库,以确保它是好的:

Selection_036

伟大的一切运作良好,接下来的步骤非常简单。

Selection_040

Selection_043

所以希望这能传达出我所做的一切正确


少客联盟- 版权声明 1、本主题所有言论和图片纯属会员个人意见,与少客联盟立场无关。
2、本站所有主题由该帖子作者发表,该帖子作者admin少客联盟享有帖子相关版权。
3、少客联盟管理员和版主有权不事先通知发贴者而删除本文。
4、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者admin少客联盟的同意。
5、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任。
6、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
7、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。
8、官方反馈邮箱:chinasuc@chinasuc.cn


上一篇:SQL注入获取用户名密码过程-integer型注入
下一篇:逆转Snapchat - 隐藏代码
Whatever is worth doing is worth doing well. juvenile hacker league
最新回复 (0)
    • 少客联盟
      2
        登录 注册 QQ登录(停用)
返回