【护网杯】Web部分相关知识点

参考:2018护网杯-web部分题解
本文讲解其中用到的相关知识点。

easy tornado

hint.txt
md5(cookie_secret + md5(filename))
要得到flag的filename已经提示,即现在只要获取tornado的cookie_secret就可以了
运用模板注入:
http://49.4.78.81:30980/error?msg={{handler.settings}}
记忆:handler.settings存放cookie_secret 哦~
嗯嗯,因为:即使看源码目前我也无法看出是handler.settings...

easy laravel

  • laravel:PHP开发框架
  • SQL注入:

萌新练习网站:https://ringzer0team.com
wp:https://xz.aliyun.com/t/2298

admin' union select 1,(select password from users limit 0,1),3,4,5#

limit 为偏移量
其他...正在研究中
2.拿管理员token
admin' union select 1,(select token from password_resets limit 1,1),3,4,5#
token:计算机身份认证中的临时令牌

  • 使用路径重置密码:
    http://49.4.78.81:31250/password/reset/1c9d0f377a75dd48abaa90dd7fa4eb35653da39561d6f9c33bdb14a8a0849616
    reset/这里是token
  • PHP反序列化漏洞
    参考:PHP反序列化原理分析
    1.serialize() 函数用于序列化对象或数组,并返回一个字符串。
  1. 魔术方法
    参考:PHP16个魔术方法详解

PHP以两个下划线__开头的方法称为魔术方法(Magic methods)
__construct()当一个对象创建时被调用
__destruct()当一个对象销毁时被调用
__toString()当一个对象被当作一个字符串使用
__sleep() 在对象在被序列化之前运行
__wakeup将在序列化之后立即被调用

3.如果服务器能够接收我们反序列化过的字符串、并且未经过滤的把其中的变量直接放进这些魔术方法里面的话,就容易造成很严重的漏洞
4.如何在不使用php函数unserialize()的前提下,触发序列化呢?phar://
参考:初探phar://

利用条件:如file_exists(),fopen(),file_get_contents(),file()等文件操作的函数。要有可用的魔术方法作为“跳板”。文件操作函数的参数可控,且:、/、phar等特殊字符没有被过滤。
实现过程:...先见链接好吗~

LTshop

  • 条件竞争
    参考:
    Web中的条件竞争漏洞
    用burp实现条件竞争
    解题详细操作

条件竞争:发生在多个线程同时访问同一个共享代码、变量、文件等没有进行锁操作或者同步操作的场景中。如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生。
实现:多线程访问,数据库update一次的时间内update了多次,导致数据出现错误

多线程访问,可以自己写脚本,也可以用burp:多线程,null payloads

  • 整形溢出:具体需要看《计算机组成原理》

但是这样还不够,发现辣条之王有填写兑换数,尝试整数溢出
因为最长为longlong,即存在2^64,又因为5包大辣条换一包辣条之王,故最多可换3689348814741910323包辣条之王,溢出再加一包,即为3689348814741910324包,输入后溢出,成功获得足够数量的Flag

你可能感兴趣的:(【护网杯】Web部分相关知识点)