BUUCTF | [RoarCTF 2019]Easy Calc】的更多相关文章

看一下页面源码,发现了提示: calc.php?num=encodeURIComponent($("#content").val()) $("#content").val() 是什么意思: 获取id为content的HTML标签元素的值,是JQuery,     $("#content")相当于document.getElementById("content");       $("#content").v…
[RoarCTF 2019]Easy Calc 题目 题目打开是这样的 查看源码 .ajax是指通过http请求加载远程数据. 可以发现有一个calc.php,输入的算式会被传入到这个php文件里,尝试一下能不能打开 可以打开,并且显示了源码 foreach 语法结构提供了遍历数组的简单方式. 语法: foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statem…
web [RoarCTF 2019]Easy Calc(利用PHP的字符串解析特性) 先上源码 <?phperror_reporting(0);if(!isset($_GET['num'])){    show_source(__FILE__);}else{        $str = $_GET['num'];        $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];  …
简介  原题复现:  考察知识点:http协议走私.php字符串解析漏洞  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 过程 一枚菜狗打开页面  懵逼一个小时然后   搜索WP..... 查看源码发现 利用php字符串解析漏洞 计算的时候会访问calc.php页面  访问它获得源码  审计发现有个过滤  过滤完执行eval() 所以可以构造 http://node3.buuoj.cn:28719/calc.ph…
看看题目内容,一个计算器,并且过滤了非数字的值,查看源码,上了waf,并且在calc.php显示waf的规则 <?php error_reporting(0); if(!isset($_GET['num'])){ show_source(__FILE__); }else{ $str = $_GET['num']; $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^']; foreach (…
0X01:什么是HTTP请求走私 HTTP请求走私属于协议层攻击,是服务器漏洞的一种. HTTP请求走私是一种干扰网站处理从一个或多个用户接收的HTTP请求序列的方式的技术.使攻击者可以绕过安全控制,未经授权访问敏感数据并直接危害其他应用程序用户. 一般来说,反向代理服务器与后端的源站服务器之间,会重用TCP链接.这也很容易理解,用户的分布范围是十分广泛,建立连接的时间也是不确定的,这样TCP链接就很难重用,而代理服务器与后端的源站服务器的IP地址是相对固定,不同用户的请求通过代理服务器与源站服…
0x01知识点: WEB-INF/web.xml泄露 WEB-INF主要包含一下文件或目录: /WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则. /WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中 /WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动ja…
前置知识 WEB-INF/web.xml泄露 java web工程目录结构 Servlet访问URL映射配置 由于客户端是通过URL地址访问Web服务器中的资源,所以Servlet程序若想被外界访问,必须把Servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成.<servlet>元素用于注册Servlet,它包含有两个主要的子元素:<servlet-name>和<s…
目录 [RoarCTF]Easy Calc 知识点 1.http走私绕过WAF 2.php字符串解析特性绕过WAF 3.绕过过滤写shell [RoarCTF]Easy Calc 题目复现链接:https://buuoj.cn/challenges 参考链接:楼上请让路 RoarCTF2019 writeup 知识点 1.http走私绕过WAF 详细说明见协议层的攻击--HTTP请求走私 一般来说,反向代理服务器与后端的源站服务器之间,会重用TCP链接.这也很容易理解,用户的分布范围是十分广泛,…
目录 [RoarCTF 2019]simple_uplod 1.ThinkPHP文件上传 2.upload()多文件上传 ThinkPHP上传文件名暴破 [RoarCTF 2019]simple_uplod 题目复现链接:https://buuoj.cn/challenges 参考链接:官方wp 1.ThinkPHP文件上传 参考官方文档可知并没有题目中限制后缀名的方法,所以可以无视allowext http://document.thinkphp.cn/manual_3_2.html#uplo…
目录 [RoarCTF 2019]Online Proxy [RoarCTF 2019]Online Proxy 题目复现链接:https://buuoj.cn/challenges 参考链接:官方wp 看到记录数据和源代码里面注释中的ip地址,猜测是把客户端的IP地址记录到数据库当中. 经过尝试发现添加X-Forwarded-For可以修改ip,找到注入点 接下来我的思路是比较常规的时间盲注,赵师傅则是将字符转为数字直接输出,效率高得多,贴出来学习一下 #!/usr/bin/env pytho…
启动靶机,查看网页源码,发现关键字 $("#content").val() 是什么意思: 获取id为content的HTML标签元素的值,是JQuery,     ("#content")相当于document.getElementById("content"); ("#content").val()相当于 document.getElementById("content").value; 多次尝试找不到思…
要素察觉 打开calc.php发现源码 过滤了很多字符.题目一开始提示了有waf,最后通过eval实现计算功能.考虑利用该函数读取flag文件,先尝试弹个phpinfo 被waf拦截,在num参数前面插一个空格来绕过waf 原理:加空格使waf把num参数错误解析成%20num,这个参数是不存在的,但php解析的时候会自动把空格删掉,从而bypass. 利用var_dump和scandir查看目录.‘/’被过滤所以用相应的ascii表示 写了个php转码 构造payload:calc.php?…
进入之后可以看到我们需要输入一个计算式来得到答案,burpsuite进行抓包之后发现页面来自于calc.php 我们直接访问calc.php页面 发现源代码泄露 可以看到当我们没有输入num值的时候就会显示源代码,否则对输入的num进行eval命令执行,在命令执行之前有黑名单过滤. 我们需要绕过黑名单进行命令执行. 虽然是这样,但是ls不在黑名单执行里面,所以我们先ls一下 返回了403界面. 这里很可能是因为有waf设备保护着输入的参数,这里我们利用php的特性,使用php字符串解析绕过WAF…
[BJDCTF2020]easy 附件 例行检查,无壳,32位程序 32位ida载入,main函数和字符串理都没有找到有关flag的提示 根据main函数的提示,有关flag的函数应该被藏起来了,在左边的函数列表里一个一个查看,看到quess的函数长得有的像 给了10个数据,每两个数据进行一次变换,变换后长度为50,之后应该是对处理好后的数据进行按位判断,是1输出'*',否则输出' 空格 ',估计对处理后的数据转换成了2进制 32行到46行的处理数据里有些函数看不大懂,百度后发现是宏定义 所以我…
[2019红帽杯]easyRE 附件 步骤: ida载入,没有main函数,就先检索了程序里的字符串 发现了base64加密的特征字符串,双击you found me跟进,找到了调用它的函数,函数很长,我们分开看 首先我们输入的数据与它下表异或后等于数组a 数组a里的值,一开始ida分析出来是v17这种的参数,我改了一部分,太多了没有全部修改完,它这边定义了一个长度为36的数组,数值看图 先写个异或脚本,看一下我们输入的字符串是什么 a = [73,111,100,108,62,81,110,9…
解法一字符串拼接: 1.得到签名sign http://8fa4531c-1164-49b7-a700-70e77e6aacb7.node3.buuoj.cn/geneSign?param=flag.txtread 2.添加Cookie发送请求得到flag Cookie: action=readscan;sign=cf8d4365c9b27a29b29e025a7ed25fa6 原理: 1.分析源码 #! /usr/bin/env python #encoding=utf-8 from flas…
感觉这题师傅们已经写得很详细了,我就做一个思路梳理吧,顺道学一波.user.ini 步骤: 1.上传一个“.user.ini”文件 2.上传自己的马“a.jpg” 3.菜刀连接 "http://b302f16c-6762-4496-be93-e544912aaf0d.node3.buuoj.cn/uploads/f4e7685fe689f675c85caeefaedcf40c/index.php",密码“pass” 解析: <?php // error_reporting(0);…
fuzz ing了一下,发现了一堆过滤: 同时发现了注入点,这个应该是var_dump()函数 ===============第二天的分割线 好吧我放弃了,找了一下wp 正确解:select 1;set sql_mode=pipes_as_concat;select 1||flag from Flag 这种解发第一次遇到赶紧在自己的环境下研究一下: 解析: 补充系统变量@@sql_modesql_mode:是一组mysql支持的基本语法及校验规则PIPES_AS_CONCAT:将“||”视为字符…
首先打开网址 发现有三种显示方法 还有一个没有输出 可以堆叠注入 1;show databases; 1;show tables; 可以看到有一个Flag表 测试发现from flag都被过滤不能直接读到flag 想了很久想不到 看别人wp了~ 看见听说比赛的时候原理泄漏了的 select $_GET['query'] || flag from flag 是这样 md 谁想的到啊 别欺负我们菜鸡好不好 不过由于没有过滤 * 出现了一个意外解*,1 预期解 在oracle 缺省支持 通过 ‘ ||…
0x00 知识点 1:Think PHP上传默认路径 默认上传路径是/home/index/upload 2:Think PHP upload()多文件上传 think PHP里的upload()函数在不传参的情况下是批量上传的,这里可以理解为防护机制只会检测一次,运用条件竞争,多次上传便可以绕过文件后缀的检测,至于为什么上传两次1.txt,是为了获取php文件的后缀,因为这里的后缀命名方式运用了uniqid函数它是基于微秒的当前时间来更改文件名的,两个同时上传生成的文件名相差不会太远. 3Th…
[强网杯 2019]随便注 先尝试普通的注入 发现注入成功了,接下来走流程的时候碰到了问题 发现过滤了select和where这个两个最重要的查询语句,不过其他的过滤很奇怪,为什么要过滤update,delete,insert这些sql语句呢? 原来这题需要用到堆叠注入: 在SQL中,分号(;)是用来表示一条sql语句的结束.试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入,而堆叠注入可以执行任意sql语句 这下就好理解了,过滤上面那些语…
BUUCTF 几道WEB题WP 今天做了几道Web题,记录一下,Web萌新写的不好,望大佬们见谅○| ̄|_ [RoarCTF 2019]Easy Calc 知识点:PHP的字符串解析特性 参考了一下网上大佬文章http://gality.cn/2019/10/21/php%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%A7%A3%E6%9E%90%E7%89%B9%E6%80%A7%E7%A0%94%E7%A9%B6/ 在php中,查询的字符串(URL或正文中)会被转换为内部$_G…
WarmUp index.php <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content=…
HTTP请求走私 HTTP请求走私 HTTP请求走私是针对于服务端处理一个或者多个接收http请求序列的方式,进行绕过安全机制,实施未授权访问一种攻击手段,获取敏感信息,并直接危害其他用户. 请求走私大多发生于前端服务器和后端服务器对客户端传入的数据理解不一致的情况.这是因为HTTP规范提供了两种不同的方法来指定请求的结束位置,即 Content-Length 和 Transfer-Encoding标头. 分类 CLTE:前端服务器使用 Content-Length 头,后端服务器使用 Tran…
很多java报错在我们渗透的时候经常会被发现,但由于没什么用,危害比较低被忽略,开发也很不愿意修改. 但从纵深防御的角度来说,多个小问题的结合就会产生严重的问题.此次遇到的一个ctf题就是一个例子. 题目来自 [RoarCTF 2019]Easy Java 进入题目后就是一个登录页面 一顿爆破得到用户名/密码  admin/admin888 然而非常失望,这思路根本不对 点击help看看 发现了一个java.io的报错,从报错和url上看非常像读取文件,这里就想到了任意文件读取,但是按理说应该有…
比赛信息 比赛地址:Buuctf靶场 内心os(蛮重要的) 我只想出手把手教程,希望大家能学会然后自己也成为ctf大佬,再来带带我QWQ 被偷走的文件 | SOLVED | foremost分离一下文件,发现有rar用软件跑一下有了密码 flag{6fe99a5d03fb01f833ec3caa80358fa3} [GXYCTF2019]佛系青年 | SOLVED | 下载文件,发现有一个没加密和加密文件,发现它是伪加密 2处不一样,然后修改成00,就可以解压了发现 这个图片其实是jpg,然后发…
2019 极客大挑战 web easysql 直接万能密码登就完事了 LoveSQL 万能密码登进去,给了md5,没解出来 手注吧,都要忘了手注怎么注了 猜字段数 3的时候正常不报错 看回显位,2,3回显 数据库名geek mariadb 表名http://42ad587e-35ed-4886-8604-152737808539.node3.buuoj.cn/check.php?username=1' union select 1,2,table_name from information_sc…
Python序列类型 在本博客中,我们将学习探讨Python的各种"序列"类,内置的三大常用数据结构--列表类(list).元组类(tuple)和字符串类(str). 不知道你发现没有,这些类都有一个很明显的共性,都可以用来保存多个数据元素,最主要的功能是:每个类都支持下标(索引)访问该序列的元素,比如使用语法 Seq[i].其实上面每个类都是使用 数组 这种简单的数据结构表示. 但是熟悉Python的读者可能知道这3种数据结构又有一些不同:比如元组和字符串是不能修改的,列表可以修改.…
easy calc 这次的比赛自己一题都没有做出来,赛后看题解的时候很难受,其实有很多东西自己其实是可以做出来的,但是思路被限制了,可能这就是菜吧. 首先web题目就是一个easy calc,emmmmmmm.想一想当初De1CTF2019的那道计算器.脑子头大.但是这一题是没有那么难. 首先打开网页是一个简单的提交页面.  这里面是提交到calc.php这个文件中,这里面有一个坑,就是要想看到源码,必须要不提交数据(但是我就没有看出这一点导致后面的路越来越难走,以至放弃). 获取源码 我们去…