ctfshow-Web1000题系列修炼(一)
¶前言 这个web系列题是前些日子我随意逛逛的时候,在ctfshow平台上发现的,正好web太菜了,借由这个系列题开始自我修炼吧😖 ¶信息收集(1-20) ¶web1 右键查看源码就能看到flag ¶web2 打开网页提示无法查看源代码,右键也使用不了,那我们就在url前面加上view-source: 1view-source:http://83a83588-671e-4a94-9c6f-6857f9e20c2f.chall.ctf.show/ 访问后即可获得flag ¶web3 右键源码也没看到信息,去查看一下请求头和响应头,在响应头这里找到flag ¶web4 题目提示robots,所以我们直接访问http://c6f215bf-6c3e-4a21-949b-1c37d603ca56.chall.ctf.show/robots.txt 然后根据提示,再访问flagishere.txt,即可得到flag ¶web5 题目提示是phps源码泄露,于是在index.php后面加上s,即构造url如下 1http://69ba95 ...
2022长安战疫网络安全卫士守护赛WP
¶前言 最近各种烦心事接锤而至,博客也很久没更新了。现在空了更新一下,这个比赛也是好久之前的了,补个wp记录一下,下边贴个当时成绩的图 ¶web ¶RCE_No_Para 1234567891011 <?phpif(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) { if(!preg_match('/session|end|next|header|dir/i',$_GET['code'])){ eval($_GET['code']); }else{ die("Hacker!"); }}else{ show_source(__FILE__);}?> 无参数rce,老考点了,这里过滤了end和dir,所以常用 ...
buuctf平台pwn刷题WP
¶test_your_nc 没啥好说的,nc 连接上去之后读取flag 123nc node4.buuoj.cn 27874cat flag ¶rip ¶知识点:栈溢出,ret2text 先用 checksec 检查一下程序 没有开启任何保护,放到 ida 中按 F5 分析伪代码 看见典型的 gets 函数导致栈溢出,gets函数是一个危险函数。因为它不检查输入的字符串长度,而是以回车来判断结束,因此容易导致栈溢出漏洞的产生。 双击 s,可以看到偏移量为0x8-(-0xF),即 8+15=23。接着观察到程序已经预留一个后门函数fun 所以我们只需要覆盖返回地址为后门函数即可,fun 函数地址也可以在 ida 中观察得到:0x401186 编写exp 12345from pwn import *p = remote("node4.buuoj.cn",29798)payload = 'a'*23 + p64(0x401186)p.sendline(payload)p.interactive() 但是运行失败,因为远程环境是 ubuntu18 ...
pwn新手入门之格式化字符串漏洞
¶前言 继续来跟着 CTF WIKI 来学习格式化字符串漏洞 ¶原理 格式化字符串函数是将计算机内存中表示的数据转化为我们人类可读的字符串格式,可以接受可变数量的参数,并将第一个参数作为格式化字符串,根据其来解析之后的参数。 常见的格式化字符串函数 函数 基本介绍 printf 输出到 stdout fprintf 输出到指定 FILE 流 vprintf 根据参数列表格式化输出到 stdout vfprintf 根据参数列表格式化输出到指定 FILE 流 sprintf 输出到字符串 snprintf 输出指定字节数到字符串 vsprintf 根据参数列表格式化输出到字符串 vsnprintf 根据参数列表格式化输出指定字节到字符串 setproctitle 设置 argv syslog 输出日志 err, verr, warn, vwarn 等 。。。 以下图为例 print 函数会按照这个形式Color %s, Number %d, Float %4.2f去解析对应的其他参数 %d : 十进制 - 输出十进制整数 ...
pwn新手入门之栈溢出
¶前言 国庆假期打算学学pwn,文章内容主要是跟着 ctfwiki 一路学习下来。 ¶栈的介绍 什么是栈,相信修过数据结构的同学们应该都了解清楚了。栈是一种先进后出的数据结构,其操作主要有入栈(push)和出栈(pop)两种操作,如下图所示 在高级语言运行时会转换为汇编语言,而汇编语言运行的过程中,使用栈的数据结构,用于保存函数的调用信息和局部变量。在学习栈时需要注意 程序的栈是从进程地址空间的高地址向低地址增长 ¶栈溢出原理 栈溢出指的是向栈中某个变量写入的字节数超过了这个变量本身所申请的字节数,因此导致了与其相邻的栈中的变量的值被改变。栈溢出漏洞轻则导致程序的崩溃,重则导致攻击者可以控制程序的执行流程。理解概念后,就可以梳理清楚栈溢出漏洞的前提 程序必须向栈上写入数据。 写入的数据大小没有被良好地控制。 最经典的栈溢出利用是覆盖程序的返回地址为攻击者所控制的地址(当然这个控制地址必须有可执行的权限),我们以一个例子来呈现 12345678910111213#include <stdio.h>#include <string.h>void succe ...
2021第五空间大赛WEB-WP
¶PNG图片转换器 附件下载源码 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849require 'sinatra'require 'digest'require 'base64'get '/' do open("./view/index.html", 'r').read()endget '/upload' do open("./view/upload.html", 'r').read()endpost '/upload' do unless params[:file] && params[:file][:tempfile] && params[:file][:filename] && params[:fil ...
ctfshow-Web1000题系列修炼(二)
¶前言 重新开一篇啦,上一篇已经太长了,继续学习了… ¶反序列化(254-278) ¶常见的魔术方法 12345678910111213141516171819202122232425262728293031__construct(),类的构造函数 __destruct(),类的析构函数 __call(),在对象中调用一个不可访问方法时调用 __callStatic(),用静态方式中调用一个不可访问方法时调用 __get(),获得一个类的成员变量时调用 __set(),设置一个类的成员变量时调用 __isset(),当对不可访问属性调用isset()或empty()时调用 __unset(),当对不可访问属性调用unset()时被调用。 __sleep(),执行serialize()时,先会调用这个函数 __wakeup(),执行unserialize()时,先会调用这个函数 __toString(),类被当成字符串时的回应方法 __invoke(),调用函数的方式调用一个对象时的回应方法 __set_state(),调用var_export()导出类时,此静态方法会被调用。 __cl ...
2021祥云杯WEB-WP
¶前言 谢谢各位哥哥带我进前三十❤️,想写wp的时候i春秋那边已经关了环境,所以去buu进行了复现。不过题目暂时还没上全,所以先解已经上线的题目(后续题目上线再补全)。 团队完整wp地址:https://wp.n03tack.top/posts/62454/ ¶cralwer_z zombie曾有个历史漏洞:https://ha.cker.in/index.php/Article/13563 ,我们需要想办法成功利用这个漏洞 本题关键代码在user.js文件,在路由profile的post请求方法中,会将输入的bucket值赋值给personalBucket 而在verify路由中,如果token检验正确就会进入if方法,将personalBucket更新到bucket中 但是可以看到这里正则进行了严格的限制 即我们只能输入https://32位数字或者字母.oss-cn-beijing.ichunqiu.com/的形式,输入其他的无法将personalBucket更新到bucket中,不过这里有个变量覆盖的问题 我们先正常进行请求,会跳转到/user/verify,更新buc ...
sqlmap-tamper编写初体验
¶前言 最近做ctf题,到了编写tamper脚本的阶段,写一篇基础浅薄的文章记录一下,新手如何上手tamper脚本的编写 ¶介绍 tamper的出现是为了引入用户自定义的脚本来修改payload以达到绕过waf的目的,而tamper文件在sqlmap文件夹下的tamper文件夹中。我们取一个base64encode.py文件来观察其结构 12345678910111213141516171819#!/usr/bin/env python"""Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)See the file 'LICENSE' for copying permission"""from lib.core.convert import encodeBase64from lib.core.enums import PRIORITY__priority__ = PRIORITY.LOWdef dependencies(): p ...
浅谈src漏洞的批量挖掘
¶前言 本篇博文只谈漏洞的利用和批量挖掘。 在接触src之前,我和很多师傅都有同一个疑问,就是那些大师傅是怎么批量挖洞的?摸滚打爬了两个月之后,我渐渐有了点自己的理解和经验,所以打算分享出来和各位师傅交流,不足之处还望指正。 ¶漏洞举例 这里以前几天爆出来的用友nc的命令执行漏洞为例 1http://xxx.xxxx.xxxx.xxxx/servlet//~ic/bsh.servlet.BshServlet 文本框里可以命令执行 ¶漏洞的批量检测 在知道这个漏洞详情之后,我们需要根据漏洞的特征去fofa里寻找全国范围里使用这个系统的网站,比如用友nc在fofa的搜索特征就是 1app="用友-UFIDA-NC" 可以看到一共有9119条结果,接下来我们需要采集所有站点的地址下来,这里推荐狼组安全团队开发的fofa采集工具fofa-viewer 1github地址:https://github.com/wgpsec/fofa_viewer 然后导出所有 ...