首页 > 其他分享 >CTFer成长记录——CTF之Web专题·攻防世界—lottery

CTFer成长记录——CTF之Web专题·攻防世界—lottery

时间:2023-08-10 15:56:07浏览次数:46  
标签:Web buy lottery money flag CTF numbers 中奖号码 true

一、题目链接

https://adworld.xctf.org.cn/challenges/list?rwNmOdr=1691651594927

二、解法步骤

  打开网页,这是一个买彩票换flag的网站。题目附件提供了源码:

  在网站上探索一番,发现买flag需要9990000R,获得资金的方式就通过buy功能买彩票。

  那么我们随便输入一个数字,然后用bp抓包发送到repeater,看看这个彩票的值是不是固定的:

发现中奖号码是8693140,那么把原来的数值修改下,看看行不行:

  发现不行,这就说明中奖号码是随机生成的。常规方式行不通,就必须进行代码审计,看看这个buy模块是怎么写的:

  源代码中包含几个文件,猜测action:buy可能在api文件中:

function buy($req){
	require_registered();
	require_min_money(2);

	$money = $_SESSION['money'];//接受用户原有money
	$numbers = $req['numbers'];//接受输入的数字
	$win_numbers = random_win_nums();//生成随机中奖号码
	$same_count = 0;//中奖数字的个数
	for($i=0; $i<7; $i++){
		if($numbers[$i] == $win_numbers[$i]){ //这里是一个弱比较==,如果数组中的值都是true的话,比较永远都是正确的
			$same_count++;
		}
	}


   通过审计发现,存在弱比较,那么我们通过抓包,将输入的号码改成数组型,里面的元素全是true,就可以通过比较,得到奖金了:

  payload:"numbers":[true,true,true,true,true,true,true],这样是数组,之前的""是字符串。

  注意,如果中奖号码随机生成的数字中有0,那么true=0是会比较失败的,多尝试几次就能攒够钱买flag了。

  然后取account里面看:

  最后买下flag:

三、总结

  本题的目标是获取足够的钱得到flag,一般是通过抓包修改,如果不行,就需要更进一步进行代码审计等操作,找到漏洞进行利用,从而获取flag。

 

标签:Web,buy,lottery,money,flag,CTF,numbers,中奖号码,true
From: https://www.cnblogs.com/miraclewolf/p/17620539.html

相关文章

  • 雷池 Web 应用防火墙安装
    官方网站:https://waf-ce.chaitin.cn/GitHub托管地址:https://github.com/chaitin/safeline 【简介】一款足够简单、足够好用、足够强的免费WAF。基于业界领先的语义引擎检测技术,作为反向代理接入,保护网站不受黑客攻击。 【特点】 一、安装部署配置需求操作系......
  • apache/hop-web 2.5安装和简单入门
    一、使用Docker安装部署1、拉取镜像推荐使用下面的web版本dockerpullapache/hop:latestdockerpullapache/hop-web:latest2、部署a、简单部署(不使用用户名密码)dockerrun-p8080:8080apache/hop-web:latestb、使用用户名密码和相关数据库配置的部署docker文件......
  • 卸载 Microsoft Edge WebView2 Runtime后无法重新安装
    报错信息:"安装失败,已为系统安装microsoftedgewebview2runtime"需要删除注册表内容(两个都需要删除才可以在进行安装)64位系统HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5} HKEY_CURRENT_USER\Softwar......
  • 使用 WebSockets、React 和 TypeScript 构建实时投票应用程序
    长话短说WebSocket允许您的应用程序具有“实时”功能,其中更新是即时的,因为它们是在开放的双向通道上传递的。这与CRUD应用程序不同,CRUD应用程序通常使用HTTP请求,必须建立连接、发送请求、接收响应,然后关闭连接。要在React应用程序中使用WebSockets,您需要一个专用服务器,例......
  • 如何在python中使用pywebcopy克隆网页?
    Python提供了Pywebcopy模块,允许我们将整个网站下载并存储到我们的机器上,包括所有图像,HTML页面和其他文件。在这个模块中,我们有一个函数,即 save_webpage(),它允许我们克隆网页。安装pywebcopy模块首先,我们必须使用以下代码在python环境中安装pywebcopy模块。pip install ......
  • tomcat10 javaweb webapp jstl的maven依赖库配置
    1.在pom.xml中配置,可能不是最新版,在idea中可能会报黄线,但是可以正常使用<dependencies><!--https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api--><dependency><groupId>jakarta.servlet</groupId>......
  • 聚焦Web前端安全:最新揭秘漏洞防御方法
    在Web安全中,服务端一直扮演着十分重要的角色。然而前端的问题也不容小觑,它也会导致信息泄露等诸如此类的问题。在这篇文章中,我们将向读者介绍如何防范Web前端中的各种漏洞。【万字长文,请先收藏再阅读】首先,我们需要了解安全防御产品已经为我们做了哪些工作。其次,我们将探讨前端......
  • [SWPUCTF 2021 新生赛]easyupload3.0
    [SWPUCTF2021新生赛]easyupload3.0题目来源:nssctf题目类型:web涉及考点:文件上传easyupload2.0就不写wp了,具体做法跟1.0差不多,不过在bp中把后缀名改成pht上传即可,1.0详见:[SWPUCTF2021新生赛]easyupload1.0如果服务器是Apache的话,配置文件可以添加这些php别名进行解析:php3,p......
  • 开发基于RESTful API的ASP.NET Web应用程序
    当开发基于RESTfulAPI的ASP.NETWeb应用程序时,您将构建一个可以通过HTTP请求进行交互的应用程序,它可以提供数据和功能给客户端应用程序或其他服务。在本博客中,我将为您提供一个基本的教程,演示如何创建一个简单的ASP.NETWeb应用程序,并实现基于RESTfulAPI的功能。步骤1:设置开发环......
  • 解密SpringBoot3.0:构建易维护的JavaWeb应用
    SpringBoot3.0最新深入浅出从入门到项目实战,突出Web应用痛点解决方案SpringBoot已经成为Java开发中最流行的框架之一,它提供了一种快速构建、易于扩展的方式,使开发人员能够更加专注于业务逻辑而不是繁琐的配置。而最新的SpringBoot3.0版本将进一步改善开发体验,并提供更多的解决方......