某单位2021年CTF初赛Writeup(部分)

Web

Web1

当时没截图,找了别人拍的照贴一下。。。
是一道简单题,不过考的知识点蛮多的。
Referer绕过、User-Agent绕过、XFF绕过之后,进行代码审计
在这里插入图片描述 这里的知识点:
使用科学计数法绕过取值大于1
intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1
使用数组绕过类型判断

<?php
echo intval(42);                      // 42
echo intval(4.2);                     // 4
echo intval('42');                    // 42
echo intval('+42');                   // 42
echo intval('-42');                   // -42
echo intval(042);                     // 34
echo intval('042');                   // 42
echo intval(1e10);                    // 1410065408
echo intval('1e10');                  // 1
echo intval(0x1A);                    // 26
echo intval(42000000);                // 42000000
echo intval(420000000000000000000);   // 0
echo intval('420000000000000000000'); // 2147483647
echo intval(42, 8);                   // 42
echo intval('42', 8);                 // 34
echo intval(array());                 // 0
echo intval(array('foo', 'bar'));     // 1
?>

Payload:
a[]=‘1E10’
然后GET方式执行命令即可,此处执行命令还过滤了空格,需要使用$IFS绕过空格过滤。

Web2

代码审计题:
在这里插入图片描述Payload:
cmd=123’.system(‘ls’).’

Web3

进入题目,是一个在线小游戏:
在这里插入图片描述进行Js代码审计,发现计算玩家金币相关的代码逻辑:
1、将更新金币逻辑处,每条鱼的金币,修改为999999
2、修改更新金币函数体内的判断逻辑,去掉金币不超过999999的限制
在这里插入图片描述
不过此种办法只能得到后一半的flag。。。
前一半flag貌似和金鲨鱼有关,当时比赛时间到了,就没再看了。
后来经过研究,可以直接寻找Js代码中的alert函数,修改判断条件,直接弹出flag即可。
在这里插入图片描述

Crypto

crypto1

在这里插入图片描述简单题,flag分为两部分:
1、取逆序再base64编码,将密文解base64并逆序输出即可。
2、百度一下,ADFGVX密码是德军在第一次世界大战中使用的栏块密码。在线解密即可:http://www.hiencode.com/adfgvx.html

crypto2

在这里插入图片描述阅读代码,是一个连续进行两次RSA加密的操作,参数p即为RSA加密的N,两次加密:
1、N已知,e已知
2、N已知,e与明文有关,且是随机生成的,范围固定
基于以上,可爆破明文,编写脚本:
在这里插入图片描述

Reverse

Reverse1

在这里插入图片描述
运行程序,如上图。
进入IDA查看:
在这里插入图片描述
关注第26行代码,在for循环中遍历40个字符,flag即为这40位的字符串。
进入enc查看:
在这里插入图片描述是硬编码在程序中的,注意2 dup(XX)这种的,即为连续的两个。
编写脚本进行计算即可:
在这里插入图片描述

Pwn

Pwn1

检查保护:
在这里插入图片描述
IDA查看:
在这里插入图片描述
进入sub_400789函数:
在这里插入图片描述
发现strcpy函数,将gets获得的字符src传入局部变量v1中,存在栈溢出。
虽然没有发现后门函数,但是NX关闭,考虑写入shellcode。
寻找src地址:
在这里插入图片描述
EXP如下:
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值