对ciscn final的web的小解析

作者: 蚁景科技 | 来源:发表于2020-10-14 14:06 被阅读0次

1 Web

输入1点击输入框后会显示如下参数:

看下源码能得到这么两句sql语句:

会发现左右过滤不相同,尝试如下可以把limit语句注释掉:

此时sql语句变成:

空格被过滤了,可以考虑\t或\n来绕过,因此输入如下会发现语句执行成功:

or 1=1发现等于号被过滤,fuzz一下能得到部分可用函数,且左边没有过滤减号:

过滤逗号可以采用from(1)for(1)的形式来绕过。

盲注脚本:

2 Web2

比赛没咋看这个题,源码只存了个app.js跑不起来就没复现,大概看了一下是原型链污染。

player是一个字典,注意到:

因为monster也是一个字典,且存在hp,并且我们是先攻击怪兽,因此我们污染buff的话就可以一刀秒了boss,然后就是用这一个循环进行污染:

传入:

那么就会把玩家的buff污染为1000,那么看到伤害的计算:

攻击+buff,也就是说这里就可以让玩家攻击无限大直接秒了boss了。

本地测试可以发现如下:

打败boss即可getflag。

3 Web3

Web3其实考了两个点一个是反序列化逃逸,一个是反序列化串中的s替换为S时可以把字符串用16进制表示,个人感觉这个题其实就是0ctfpiapiapia+强网杯2020的web辅助。

wwwroot.zip源码泄露。

给了一个user类,逃逸点在于:

至于从哪里进行序列化串的传入,看到:

先说我们传入的虽然是一个数组, 但因为waf处如果我们传入一个flag,就会被替换为index,此时长度差为1。

在这里会把我们的序列化串waf后再反序列化,我们利用它可以逃逸出来一个user对象。

waf的话可以使用s替换为S以此使用16进制来表示flag.php来绕过,这一个过滤限制了我们只能使用old_password字段,否则的话可以采用gopher替换为index来吃掉部分序列化串。

需要伪造的序列化串为这么一串东西,长度为196,所以这里需要196个flag替换为index:

本地模拟一下过waf会发现这里长度980其实就是index的长度总和:

那么余下的序列化串理所当然就逃逸出去了。

update_username=1&old_password=flagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflagflag";s:1:"1";O:4:"User":6:{S:8:"username";s:1:"1";S:8:"password";s:1:"1";s:3:"age";s:1:"1";s:5:"email";s:1:"1";S:12:"\00User\00avatar";S:8:"\66\6C\61\67\2E\70\68\70";S:13:"\00User\00content";s:0:"";}&update_password=123&update_age=1&update_email=231@qq.com

当然了如果没有前面对字段的格式过滤,也可以采用如下的payload:

update_username=1&old_password=1&update_password=1&updat

相关文章

  • 对ciscn final的web的小解析

    1 Web 输入1点击输入框后会显示如下参数: 看下源码能得到这么两句sql语句: 会发现左右过滤不相同,尝试如下...

  • ciscn_final_3题解

    首先拿到题之后检查防护情况checksec果然。。全开,无GOT可改,优先考虑__free_hook和__mall...

  • onTouchEvent源码解析

    源码解析public boolean onTouchEvent(MotionEvent event) {final...

  • JWT伪造cookie

    以全国信安比赛CISCN2018的web题easyweb为例 这道题的大部分人是用非预期解做出来的 密码为空,可以...

  • CISCN-2019-web复现(完)

    原来国赛就是CISCN......buuoj上题目挺全的,干脆选一些比较有价值的题目复现下: Hack World...

  • 好程序员web前端培训解析Web前端中的IoC是什么

    好程序员web前端培训解析Web前端中的IoC是什么,今天要为大家分享的文章就是关于对web前端中的 IoC的解释...

  • 是否可以继承String类,为什么

    不能被继承,因为String类有final修饰符,而final修饰的类是不能被继承的。 详细解析: 1. 关于fi...

  • WEB环境的搭建

    web前端(html文件解析)就web的前端发展史而言,以前解析的是xml文件,再后来html的标准初步建立,发展...

  • 2.body-parser

    1.对post请求的请求体进行解析 https://blog.csdn.net/web_youth/article...

  • 3.谈谈 final、finally、finalize的区别

    题目:谈谈 final、finally、finalize的区别?解析:如题,如果要知道他们之间的区别,那么我们必须...

网友评论

    本文标题:对ciscn final的web的小解析

    本文链接:https://www.haomeiwen.com/subject/hofwpktx.html