取证,SQL注入和长期苦难:在线阶段NeoQUEST-2020的任务3的分析



今天,我们将考虑NeoQUEST-2020最具争议的任务:它的第一部分是通过它的参与者数量的冠军,第二部分仅服从了少数。他有什么特别之处?了解切工!


您是否曾经调查过RAM转储?您知道从那里可以得到多少有趣的东西吗? (破坏者:一切,包括运行脚本的结果,最近的照片以及浏览器的历史记录)。
那外来的SQL注入又如何呢?您将某张图片上传到该网站,并从一个封闭的数据库中获得了信息-这不是理想的犯罪吗?
在本文的第一部分中,我们将考虑用于分析内存转储的工具,并学习如何从那里提取所需的信息,在本文的第二部分中,我们将清楚地展示操纵图像标签以进行棘手的注入的过程:)

因此,任务是下载存档,其中包含一个1 GB的二进制文件,其名称为memdump.bin,基于该文件,我们可以假定这是RAM转储。我们将使用波动率框架进行研究。 Volatility支持各种插件,可以轻松地从转储中搜索和提取各种信息,这些信息对勒索分析师很有用。首先,使用imageinfo命令并获取有关转储的信息:



从imageinfo命令的输出来看,我们正在处理Windows 7内存转储。接下来,我们将查看使用pslist命令删除转储时系统中正在运行的进程的列表:



在此列表中,您可以看到几个有趣的进程。让我们从chrome.exe进程开始研究-您总是可以在浏览器中找到有趣的东西。还有其他用于波动的插件,可以自动从流程中提取信息。例如,chromehistory插件将允许我们从RAM转储中提取浏览器访问历史记录:



在chrome的历史记录中,可以立即注意到一些有趣的事情。首先,指向作业第二部分的链接,以及有关PNG图像中元数据的搜索查询,这也是第二部分的提示,但稍后我们将进行介绍。在当前阶段,我们对要求促销代码的网站和pdf文件打折感兴趣,这暗示着进一步搜索的目的(运行Acrobat Reader`a也可能会提示我们)。让我们尝试使用filescan命令在转储中查找pdf文档:



祝您好运!似乎转储中有一些promo.pdf。让我们尝试使用dumpfiles命令将其拉出:



在此阶段,由于某些pdf文档查看器可能无法识别刚刚提取的文件(您只需要删除文件末尾的多余字节),可能会引起较小的困难。但是,我们真的会担心额外的字节吗?所有完成至少一项任务的参与者!)。



接下来,尝试获取第二个标志。我们返回到该站点,该链接是在浏览器历史记录中找到的。要访问该网站,您需要输入促销代码。我们回想起浏览器中的搜索历史和文档本身的描述(使用此联接),从中我们可以假定第一个标志是我们所需的促销代码。我们将其输入到字段中,然后转到可以上传图片



的站点根据站点冻结的频率来判断,我们的参与者决定通过实验验证所有可能类型的文档的加载情况。一段时间后,我们了解到只能将PNG图片上传到该网站。下一个难题是消息“抱歉,没有足够的数据来存储该图像,对不起!”,当您尝试上传图片时会出现此消息。

回到浏览器的历史,我们回想起有关“向png文件添加元数据”形式的请求。使用简单的推断,我们得出结论,很可能必须在元数据中输入某些值才能将图像上传到站点。您可以从探索PNG格式开始(例如,有关描述,请单击此处)。首先,检查元数据PNG图像的标准关键字列表,例如:“作者”,“描述”等。例如,使用ImageMagick集中的convert实用工具,将元数据添加到测试图像中:

convert test.png -set'标题''1'-set'Author''2'-set'描述''3'-set'版权''4 '-设置'创建时间'5'-设置'软件'6'-设置'免责声明'7'-设置'警告''8'-设置'源''9'-设置'评论''0'out.png

我们尝试将生成的图像上载到网站并享受成功:



事实证明,必要的元数据字段是标题,描述,作者和版权。
顺便说一句,这也可以在内存转储中找到提示:您可以使用波动性找到提及mr_cat.png文件的信息。



我们的参与者认为,有必要在Cat先生的帮助下注入该网站(向Cat先生发送的许多邮件以压缩,倒转,反射和其他难看的外观出现在我们的邮件中),但与Cat无关。他只是分散了注意力并向参与者暗示:好吧,看着我,里面有些有趣的东西!在转储内部,图像仅被部分保存;但是,在其残留中,您会注意到必要的完整元数据字段:



继续:现在我们可以将文件上传到站点了;但是,它给出了什么以及如何查找标志?逻辑上假设,一旦需要下载元数据,就有可能将它们以某种方式用于存储下载的文件(例如,作为数据库中的键)。万岁!我们正在接近甜点:我们需要检查站点是否存在SQL注入。我们发现,如果其中一个参数用双引号(“)代替,则该站点将通知我们错误而不是加载图像:



现在,我们看到了SQL查询本身,并了解了可以操作哪些字段以构造注入以从使用的数据库中提取数据。至于标志的位置,在这种情况下,检查已经上传到数据库的第一张图像是合乎逻辑的。另外,在注入操作期间,您应注意在请求中执行INSERT的事实。这将迫使您构造特定的查询,因为您无法在与插入操作(INSERT)同时插入到的同一表中显式执行SELECT操作。

让我们提出一个请求,以提取数据库中第一张图像的描述:

转换test1.png-设置'标题''1'-设置'作者'''',(选择描述FROM(选择*从图片)AS x限制0,1))--'-设置'描述''3'-设置'Copyright''4'test.png

将生成的图像上传到网站上,并在“版权”字段中获得描述,该标志是一个标志:



万岁,任务已完成!我们希望我们说服每个人在百万分之一次后再次检查用户输入,并确保其安全通过创建RAM的转储来吸引您的注意:)
在文章结尾处引用圣贤的话:


All Articles