
CTF-Web
文章平均质量分 93
我的CTF-Web入门
zhang三
这个作者很懒,什么都没留下…
展开
-
Stacked Queries(堆叠注入)
文章目录基本知识原理介绍:堆叠注入的局限性Mysql数据库实例介绍CTF 实战与各种姿势修改表名利用HANDLER语句利用MySql预处理正常利用MySql预处理配合十六进制绕过关键字MySql预处理配合字符串拼接绕过关键字Stacked injection 汉语翻译过来后,国内有的称为堆查询注入,也有称之为堆叠注入。个人认为称之为堆叠注入更为准确。堆叠注入为攻击者提供了很多的攻击手段,通过添加一个新的查询或者终止查询( ; ),可以达到 修改数据 和 调用存储过程 的目的。这种技术在SQL注入中还是比较原创 2021-03-28 10:02:18 · 4606 阅读 · 1 评论 -
Apache SSI 远程命令执行漏洞(SSI注入漏洞)
SSI 服务器端包含SSI(server-side includes)能帮我们实现什么功能:SSI提供了一种对现有HTML文档增加动态内容的方法,即在html中加入动态内容。SSI是嵌入HTML页面中的指令,在页面被提供时由服务器进行运算,以对现有HTML页面增加动态生成的内容,而无须通过CGI程序提供其整个页面,或者使用其他动态技术。从技术角度上来说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针,即允许通过在HTML页面注入脚本或远程执行任意命令。在测试任意文件上传漏洞的时候,目标原创 2020-07-25 13:09:15 · 3708 阅读 · 0 评论 -
PHP的模板注入(Smarty模板)
Smarty是一个PHP的模板引擎,提供让程序逻辑与页面显示(HTML/CSS)代码分离的功能。对于该框架的SSTI漏洞很多文章往往只是一笔带过,讲解的重心往往在flask等框架上。本篇文章结合一道CTF题目对Smarty的SSTI漏洞进行了一定的分析。题目地址:https://buuoj.cn/challenges CISCN2019华东南赛区Web11基本信息题目模拟了一个获取IP的API,并且可以在最下方看到“Build With Smarty !”可以确定页面使用的是Smarty模板引擎。题原创 2020-07-24 12:23:35 · 11897 阅读 · 0 评论 -
PHP的伪随机数爆破
基础介绍随机数并不随机首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”。其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数。计算机只能生成相对的随机数,即伪随机数。伪随机数并不是假随机数,这里的“伪”是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的。 怎样理解呢?产生的伪随机数有时遵守一定的规律,有时不遵守任何规律;伪随机数有一部分遵守一定的规律;另一部分不遵守任何规律。比如“世上没有两片形状完全相同的树叶”,这正是原创 2020-07-12 20:00:08 · 3838 阅读 · 1 评论 -
[GXYCTF2019]BabySQli——“绕过md5比较”
TMD这道题目就是脑洞真的大!!!进入题目,一个登录框,随便输入后点击登录就跳转到了search.php页面,查看源码可以发现一长传编码,base32再base64解密之后是 select * from user where username = '$name'。常规sql注入手段猜测后台代码中的字段数:1' union select 1,2#1' union select 1,2,3#可以测出user这个表一共有三列,猜测分别为id,username,password(经验)。在这里,原创 2020-07-06 21:47:45 · 2460 阅读 · 0 评论 -
PHP反序列化字符逃逸详解
文章目录第一种情况:替换修改后导致序列化字符串变长例题——[0CTF 2016]piapiapia第二种情况——替换之后导致序列化字符串变短实例——[安洵杯 2019]easy_serialize_php此类题目的本质就是改变序列化字符串的长度,导致反序列化漏洞这种题目有个共同点:php序列化后的字符串经过了替换或者修改,导致字符串长度发生变化。总是先进行序列化,再进行替换修改操作。第一种情况:替换修改后导致序列化字符串变长示例代码:<?phpfunction filter($st原创 2020-07-05 16:13:47 · 9273 阅读 · 6 评论 -
Bypass information_schema与无列名注入
文章目录Bypass information_schema前言前置任务MySQL5.7的新特性sys.schema_auto_increment_columnsschema_table_statistics_with_buffer、x$schema_table_statistics_with_buffer无列名注入利用joinjoin … using(xx)利用普通子查询[SWPU2019]Web1——无列名注入Bypass information_schema前言聊一聊mysql在被waf禁掉了in原创 2020-06-09 19:43:11 · 4263 阅读 · 4 评论 -
[GYCTF2020]FlaskApp(SSTI)
进入题目:是一个用flask写的一个base64加解密应用。有一个加密页面和解密页面,思路应该是在加密页面输入payload进行加密,加密结果在解密页面进行解密,输出解密后的payload被渲染到页面输出后执行了payload。官方write up说看到根据hint1,失败乃成功之母,应该能想到flask的debug模式。但是我当时看到的时候并没有想到是debug模式,这就是没有进行足够积累的后果。base64decode在不会解析的时候就会报错,然后习惯性对base64解密页面进行报错实验,ba原创 2020-06-09 14:06:09 · 3102 阅读 · 0 评论 -
[GKCTF2020]EZ三剑客-EzWeb(SSRF)
查看源码发现提示:在url里访问一下:得到一串ifconfig的结果,整理一下的:eth0 Link encap:Ethernet HWaddr 02:42:ad:62:04:0a inet addr:173.96.119.10 Bcast:173.98.4.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1 RX pac.原创 2020-06-03 22:18:15 · 4867 阅读 · 0 评论 -
渗透测试|shopXO后台全版本获取Shell复现
shopxo是一款开源的企业级商城系统,基于thinkphp5框架开发。这几天做了“[GKCTF2020]老八小超市儿”这道题,学到了后台获取shell的一个技巧,所以在这里复现一下。提供一个搜索语法:title=“ShopXO企业级B2C电商系统提供商”(不要干坏事哦)渗透测试复现页面来自buuctf——[GKCTF2020]老八小超市儿。ShopXO全版本getshell流程走起:进入题目(网上随便可以通过搜索找到一个使用shopxo搭建的演示站)别的漏洞没找到,尝试访问默认登陆后台,后台页原创 2020-05-29 18:34:57 · 6723 阅读 · 1 评论 -
CTF中的CVE-2020-7066
PHP中get_headers函数在PHP开发中,我们经常需要获取HTTP请求中发送的服务器信息,本文通过一个简单的PHP示例介绍了通过get_headers函数获取服务器的相关信息。**get_headers() 是PHP系统级函数,他返回一个包含有服务器响应一个 HTTP 请求所发送的标头的数组。**如果失败则返回 FALSE 并发出一条 E_WARNING 级别的错误信息(可用来判断远程文件是否存在)。array get_headers ( string $url [, int $format原创 2020-05-29 15:14:13 · 2945 阅读 · 0 评论 -
Bypass_disable_functions via LD_PRELOAD
千辛万苦拿到的 webshell 居然无法执行系统命令:原创 2020-04-22 12:27:30 · 1247 阅读 · 0 评论 -
flask 之 ssti 模板注入学习
flask基础Flask是一个使用 Python 编写的轻量级 Web 应用框架。在学习SSTI之前,先把flask的运作流程搞明白。这样有利用更快速的理解原理。路由先看一段代码from flask import flask @app.route('/index/')def hello_word(): return 'hello word'route装饰器的作用是将函数与url绑定起来。例子中的代码的作用就是当你访问http://127.0.0.1:5000/index的时候,fla原创 2020-05-21 11:50:33 · 2144 阅读 · 0 评论 -
SSTI 服务器端模板注入
什么是SSTISSTI就是服务器端模板注入(Server-Side Template Injection),也给出了一个注入的概念,通过与服务端模板的 输入输出 交互,在过滤不严格的情况下,构造恶意输入数据,从而达到读取文件或者getshell的目的,目前CTF常见的SSTI题中,大部分是考python的。常见的注入有:SQL 注入,XSS 注入,XPATH 注入,XML 注入,代码注入,命令注入等等。sql注入已经出世很多年了,对于sql注入的概念和原理很多人应该是相当清楚了,SSTI也是注入类的漏洞原创 2020-05-21 11:05:52 · 2786 阅读 · 1 评论 -
BUUCTF 2018 Online Tool(escapeshellarg和escapeshellcmd使用不当导致rce)
参考:谈谈escapeshellarg参数绕过和注入的问题PHP escapeshellarg()和escapeshellcmd()并用之殇谈escapeshellarg绕过与参数注入漏洞https://blog.csdn.net/qq_26406447/article/details/100711933进入题目显示php源码:这里用到escapeshellarg()、escapeshellcmd()两个函数:escapeshellarg:escapeshellarg() 将给字符串增加一原创 2020-05-20 17:08:31 · 1334 阅读 · 0 评论 -
SQL正则盲注
题目链接: 地址随便输入用户名和密码后登录,跳到check.php页面下面是题目源码<?php include "config.php";error_reporting(0);highlight_file(__FILE__); $check_list = "/into|load_file|0x|outfile|by|substr|base|echo|hex|mid|like|or|char|union|or|select|greatest|%00|_|\'|admin|limit|原创 2020-05-15 16:40:47 · 898 阅读 · 0 评论 -
XXE漏洞攻击——几道CTF题
文章目录Fake XML CookbookTrue XML Cookbook(XXE+ssrf)ISCC 未知的风险-1Fake XML Cookbooksql注入不行,F12 查看源码:function doLogin(){ var username = $("#username").val(); // val() 方法返回或设置被选元素的值 var password = $("#password").val(); // $() 相当于 document.getElementById(原创 2020-05-14 13:41:33 · 9751 阅读 · 0 评论 -
JWT及JWT伪造
文章目录JWT简介传统的Session认证基于token的鉴权机制JWT的构成头部(header)载荷(payload)签证(signature)通过JWT 进行认证JWT token破解绕过JWT伪造Bukgu jwt——JWT伪造JWT简介Json web token (JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519)。该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被原创 2020-05-12 15:04:58 · 15189 阅读 · 4 评论 -
XXE与XXE漏洞学习
文章目录XML介绍定义文档结构DTD文档类型定义实体类别介绍DTD 实体声明XML外部实体攻击怎么甄别一个XML实体攻击漏洞?xxe漏洞检测思路从PHP代码层面上xxe漏洞的危害危害1:读取任意文件有回显的情况无回显的情况危害2:命令执行(装有expect扩展)危害3:内网探测/SSRF危害4:拒绝服务攻击XXE漏洞修复与防御一道CTF题目案例分析XML介绍定义XML是用于 标记电子文件 使其具有 结构性 的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XM原创 2020-05-12 12:21:53 · 2186 阅读 · 1 评论 -
命令执行中关于PHP正则表达式的一些绕过方法
最近做了buuctf上的[极客大挑战 2019]RCE ME,PHP正则的一些绕过方法也终于要用上了,原文地址:https://blog.csdn.net/mochu7777777/article/details/104631142参考:https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.htmlhttps://w...转载 2020-04-21 16:54:55 · 8788 阅读 · 1 评论 -
CTF——Thinkphp5远程命令执行漏洞利用
[BJDCTF 2nd]old-hack(5.0.23)进入之后:打开页面,页面提示powered by Thinkphp。说明可能和thinkphp框架有关。也确实如此,这里用到了thinkphp5的远程命令执行漏洞。Thinkphp5远程命令执行漏洞漏洞描述:由于thinkphp对框架中的核心Requests类的method方法提供了表单请求伪造,该功能利用 $_POST['_meth...原创 2020-05-03 20:09:27 · 7819 阅读 · 2 评论 -
5位可控字符下的命令执行
遇到了这样一个题,这题是一个特别的命令执行题, 首先进去首页之后发现以下源码:<?php $sandbox = '/www/sandbox/' . md5("orange" . $_SERVER['REMOTE_ADDR']); @mkdir($sandbox); @chdir($sandbox); if (isset($_GET['cmd']) &...原创 2020-05-03 15:03:54 · 1849 阅读 · 0 评论 -
PHP序列化反序列化漏洞总结(一篇懂)
文章目录序列化和反序列化的概念与基础知识PHP的序列化访问控制修饰符PHP的反序列化PHP反序列化漏洞(常规)__wakeup()__destruct()示例一:示例二(连菜刀、反序列化免杀后门):__toString()Error类ExceptionPHP中Session反序列化(重点)简介与基础知识Session序列化漏洞利用PHP Session中的序列化危害实际利用CTF例题序列化和反...原创 2020-05-03 10:29:54 · 8734 阅读 · 5 评论 -
Session序列化选择器漏洞(ini_set('session.serialize_handler', 'php');)
首先打开题目页面直接获得源码:<?php//A webshell is wait for youini_set('session.serialize_handler', 'php');#ini_set设置指定配置选项的值。这个选项会在脚本运行时保持新的值,并在脚本结束时恢复。 设置选择session序列化选择器session_start();class OowoO{ p...原创 2020-05-02 15:18:20 · 2783 阅读 · 0 评论 -
利用PHP的字符串解析特性绕过Waf
PHP的字符串解析特性我们知道PHP将查询字符串(在URL或正文中)转换为内部关联数组$_GET或关联数组$_POST。例如:/?foo=bar变成Array([foo] => “bar”)。值得注意的是,查询字符串在解析的过程中会将某些字符删除或用下划线代替。例如,/?%20news[id%00=42会转换为Array([news_id] => 42)。如果一个IDS/IPS或WA...原创 2020-05-01 12:07:09 · 4598 阅读 · 0 评论 -
perl脚本中GET命令执行漏洞([HITCON 2017]SSRFme)
GET命令执行漏洞思路来自于HITCON2017中的ssrfme,考点是GET的任意命令执行。代码很简单,调用命令GET来执行从url获取的参数, 然后按照filename新建文件,写入GET的结果。我不知道关于这个问题最早是什么时候爆出的了,但确实已经很多年了。root@iZ285ei82c1Z:~/test# cat a.pl open(FD, "|id");print <FD...原创 2020-04-30 22:20:37 · 3215 阅读 · 0 评论 -
变量覆盖漏洞总结
什么是变量覆盖漏洞自定义的参数值替换原有变量值的情况称为变量覆盖漏洞经常导致变量覆盖漏洞场景有:**$$**使用不当,**extract()**函数使用不当,**parse_str()**函数使用不当,**import_request_variables()**使用不当,开启了全局变量注册等。几种变量覆盖漏洞全局变量覆盖register_globals的意思就是注册为全局变量,所以当为O...原创 2020-04-30 00:59:00 · 3643 阅读 · 0 评论 -
[BJDCTF2020]Easy MD5——Login--password='".md5($pass,true)."'绕过md5进行注入
Login–password=’".md5($pass,true)."’进入题目,有一个输入框,让你输入密码,发现输入啥都没变化:源码中一点线索也没有。我们随便输入并抓个包看看又什么秘密:发现提示hint:select * from 'admin' where password=md5($pass,true),或者在开发这里面:看到响应头有提示:现在就可以确定是个sql注入了...原创 2020-04-29 21:29:28 · 1630 阅读 · 0 评论 -
Stacked Queries堆叠注入(强网杯2019随便注---堆叠、修改表名和字段名、HANDLER ... READ)
Stacked injection 汉语翻译过来后,国内有的称为堆查询注入,也有称之为堆叠注入。个人认为称之为堆叠注入更为准确。堆叠注入为攻击者提供了很多的攻击手段,通过添加一个新的查询或者终止查询( ; ),可以达到 修改数据 和 调用存储过程 的目的。这种技术在SQL注入中还是比较频繁的。基本知识原理介绍:**在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下,我们在结束一...原创 2020-04-28 23:01:56 · 1673 阅读 · 0 评论 -
[HCTF 2018]WarmUp(改编自phpMyAdmin 4.8.1后台文件包含漏洞---CVE-2018-12613)
进入题目,一脸淫笑查看源码,发现source.php:访问source.php,出现php代码<?php highlight_file(__FILE__); class emmm { public static function checkFile(&$page) { $whitelist = ["...原创 2020-04-28 19:57:44 · 490 阅读 · 0 评论 -
利用php的原生类进行XSS([BJDCTF 2nd]xss之光)
文章目录基础知识__toString文章围绕着一个问题,如果在代码审计中有反序列化点,但是在原本的代码中找不到pop链该如何?N1CTF有一个无pop链的反序列化的题目,其中就是找到php内置类来进行反序列化。基础知识首先还是来回顾一下序列化中的魔术方法,下面也将以此进行研究。当对象被创建的时候调用:__construct当对象被销毁的时候调用:__destruct当对象被当作一个字符...原创 2020-04-28 15:41:17 · 1804 阅读 · 0 评论 -
[BJDCTF 2nd]简单注入(过滤了引号,利用\逃逸sql语句第二字段)
进入后页面:看看后台用什么闭合的,测试单引号:发现直接就给你过滤了。试试还过滤了什么,发现过滤了以下指令:(这个方法挺巧的)union , select , = , ' , & , && , - , " , and 连引号都过滤了,这可怎么做啊。看看又什么提示,源码里面啥也没有,扫描一下发现robots.txt:发现了hint.txt提示,访问看看:...原创 2020-04-28 12:54:55 · 1575 阅读 · 0 评论 -
CTF-WEB——HTTP Headers类型
基本套路此类题型就是套路:burpsuite抓包,重放,并根据题目要求多次重放,最终满足全部要求后获得flag。Header请求头参数详解Header解释示例Accept指定客户端能够接收的内容类型Accept: text/plain, text/html,application/jsonAccept-Charset浏览器可以接受的字符编码集。Accep...原创 2020-04-26 19:47:47 · 8241 阅读 · 1 评论 -
[极客大挑战 2019]RCE ME(取反、异或绕过正则表达式、bypass disable_function)
题目进去后,很简单的代码,显然命令执行:但是得要先绕过preg_match()中正则表达式的限制,一开始傻乎乎的直接传了个数组,妄图绕过preg_match(),这很显然是不行的。附上大佬的文章:关于PHP正则的一些绕过方法...原创 2020-04-21 19:01:50 · 19005 阅读 · 1 评论 -
[极客大挑战 2019]HardSQL(双查询报错,过滤了空格,配合left()或right()回显另一部分flag)
还是同一个页面。先看看后台用什么闭合的:用户名:1密码:1'可知后台为单引号闭合。试试万能密码登录:用户名:1' or 1=1#密码:123常规sql注入发现成这样了。然后发现order by 和 union 都不行,后台有过滤。经在登录框中尝试,发现过滤了and、= 空格 union等多个sql关键字我们尝试报错注入,先尝试group by配合floor()的报错...原创 2020-04-21 13:45:55 · 326 阅读 · 0 评论 -
[极客大挑战 2019]BuyFlag总结
php中的strcmp漏洞说明:int strcmp ( string $str1 , string $str2 )参数 str1第一个字符串。str2第二个字符串。如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。可知,传入的期望类型是字符串类型的数据,但是如果我们传入非字符串类型的数据的时候,这个函数将会有...原创 2020-04-16 02:22:39 · 4213 阅读 · 0 评论 -
[极客大挑战 2019]BabySQL(replace()的简单过滤)
又是这个页面,一样的网站,就是加了过滤,试一下万能密码登陆:用户名:1' or 1=1#密码:123具体报错如下:只保留了 1=1# ,这就说明被检测到了or,并把or给过滤了看一看还过滤了什么玩意:随便输入:用户名:1' union select 1,2,3#报错显示只保留了 1,2,3# ,这就说明被检测到了union 和 select,并把他们给过滤了我们猜测后台的...原创 2020-04-15 17:05:29 · 545 阅读 · 0 评论 -
[极客大挑战 2019]Http(referer,User-Agent,XFF)
首先查看源代码,找到Secret.php我们访问这个页面,显示上说这个页面必须来自"https://www.Sycsecret.com"那就简单了,我们抓包,又说必须使用Syclover浏览器,我们这里直接修改User-Agent头即可又说No!!! you can only read this locally!!!,让我们伪造IP,在headers里面添加X-Forwarded-F...原创 2020-04-15 15:57:43 · 619 阅读 · 0 评论 -
[极客大挑战 2019]LoveSQL(最基础的sql注入,万能密码登录)
进去之后:发现登录框,可能是万能密码登录,我们试一下:在登录框中输入:用户名:1' or 1=1#密码:123(随便输)点击登录跳转到了check.php页面。并得到了用户名和密码:尝试密码md5解密失败,还是回到注入的思路上,查询字段数:在url中输入:/check.php?username=admin' order by 3%23&password=1 ...原创 2020-04-15 14:16:58 · 20861 阅读 · 6 评论 -
[BJDCTF 2nd]duangShell(反弹shell,swp泄露)
[BJDCTF 2nd]duangShell讲解打开之后是这个样的很明显,是swp备份文件泄露。当你非正常关闭vim编辑器时(比如直接关闭终端或者电脑断电),会生成一个.swp文件,这个文件是一个临时交换文件,用来备份缓冲区中的内容。意外退出时,并不会覆盖旧的交换文件,而是会重新生成新的交换文件。而原来的文件中并不会有这次的修改,文件内容还是和打开时一样。例如,第一次产生的交换文件名...原创 2020-04-06 21:07:55 · 2490 阅读 · 1 评论