ctf
Noslpum
网络安全本科在读,所写文章仅属于个人爱好,用于记录,学习,交流。请勿用于盈利。
展开
-
【学习笔记 49】 buu [极客大挑战 2019]FinalSQL
0x00 知识点盲注解体思路盲注没有什么可以详解的知识点,只需要找到注入点,之后这里就是利用常规的payload,构造二分法脚本就可以直接解题打开题目一看提示说是SQL盲注,先要找到注入点,这里的注入点不是在用户名,密码处,而是在12345这个按钮的地方,点击一下跳转到search.php页面,在该页面id=后可以构造payload这里没有什么过滤利用常规的payload就可以直接跑脚本"id=1^(ascii(substr((select(database())),%d,1))&l原创 2020-08-11 10:57:12 · 244 阅读 · 0 评论 -
【学习笔记 48】 buu [网鼎杯 2020 朱雀组]Nmap
0x00 知识点NMAP中使用-0G命令可以实现代码写入0x01 解题思路打开网站一看发现是一个NMAP网站尝试输入输入任意ip可以看到这里返回了nmap扫描的结果,这里我们就想到了NMAP里的-oG命令实现代码的写入,那我们这里就可以尝试构造payload,来利用‘拼接,写入我们想要的shell文件' <?php @eval($_POST["cmd"]);?> -oG shell.php '尝试后发现报错,说明这里有过滤不能直接进行,最后利用fuzz发现过滤了php,原创 2020-08-11 09:29:23 · 792 阅读 · 1 评论 -
【学习笔记 47】 buu [网鼎杯 2020 朱雀组]phpweb
0x00 知识点readfile函数读取文件反序列化实现命令执行0x01 知识点详解什么是readfile函数?答:readfile() 函数读取一个文件,并写入到输出缓冲。如果成功,该函数返回从文件中读入的字节数。如果失败,该函数返回 FALSE 并附带错误信息。您可以通过在函数名前面添加一个 ‘@’ 来隐藏错误输出。什么是反序列化?答: 可以去看看我之前的文章<?php $disable_fun = array("exec","shell_exec","syste原创 2020-08-09 14:42:53 · 409 阅读 · 0 评论 -
【学习笔记 46】 buu [NCTF2019]Fake XML cookbook
0x00 知识点XXE攻击0x01 知识点详解什么是XXE攻击?答: XXE漏洞全称XML External Entity Injection即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。这里有一篇大佬的博客可以学习学习0x02 解题思路原创 2020-08-03 11:38:45 · 408 阅读 · 0 评论 -
【学习笔记 45】 buu [安洵杯 2019]easy_serialize_php
0x00 知识点php反序列化逃逸代码审计0x01 知识点详解什么是php反序列化逃逸?答:<?php$_SESSION["user"]='flagflagflagflagflagflag';$_SESSION["function"]='a";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";s:2:"dd";s:1:"a";}';$_SESSION["img"]='L2QwZzNfZmxsbGxsbGFn';echo serialize($_SE原创 2020-08-03 11:04:11 · 539 阅读 · 1 评论 -
【学习笔记 44】 buu [MRCTF2020]Ez_bypass
0x00 知识点绕过md5()函数绕过is_numeric()函数代码审计0x01 知识点详解md5()函数怎么绕过?答:本题是将两参数传成数组,由于md5()函数无法操作数组,也就判断都为null,像个参数的md5值也就相同了。is_numeric()函数怎么绕过?答:is_numeric() 函数用于检测变量是否为数字或数字字符串。本题由于在这个函数之后还有一个弱类型比较,所以要用1234567a绕。1234567a是字符串,但是弱类型比较的时候,1在前,php会将其整体转成数字,原创 2020-08-03 10:17:09 · 298 阅读 · 0 评论 -
【学习笔记 43】 buu [BJDCTF 2nd]简单注入
0x00 知识点\转义单引号整型注入二分法脚本0x01 解题思路打开网站一看,再尝试在用户名和密码处尝试进行注入,发现‘,“都会报错,之后用御剑一扫,发现hint.txt文件。访问一下看看提示说之后正确的用户和密码才能登上去,得到flag。之后给出了传参方式和mysql命令语句。这时候很明显username处注入\来转义单引号,password处使用sql语句整数型注入。举个例子:a. 传入admin\ 和 or/**/length(database())>0#会回显st原创 2020-08-02 21:43:34 · 1128 阅读 · 0 评论 -
【学习笔记 42】 buu [BJDCTF2020]Cookie is so stable
0x00 知识点Twig模板注入0x01 知识点详解什么是Twig模板注入?答:这里推荐一位大佬的文章,看看人家的博客,才是真的强。https://www.k0rz3n.com/2018/11/12/一篇文章带你理解漏洞之SSTI漏洞/#2-Twig0x02 解题思路什么都没有,点开flag发现是个登录界面,尝试经典{{7*7}}后判断是Twig模板注入再hint页面查看源码发现提示指向了cookie,再flag页面登录的时候抓包分析。推测出cookie里的user参数就是原创 2020-08-02 18:56:11 · 377 阅读 · 0 评论 -
【学习笔记 41】 buu [GXYCTF2019]BabyUpload
0x00 知识点.htaccess文件上传绕过0x01 知识点详解请参考我上一篇学习笔记0x02 解题思路一看就知道是上传,尝试php3,phtml,普通一句话木马改后缀也不行,而且是添加了对文件的检测。继续尝试利用.htaccess文件上传,首先上传一个.htaccess文件<FilesMatch "flag.png"> SetHandler application/x-httpd-php</FilesMatch>这里注意,这道题不知道为什么,我这原创 2020-08-02 15:40:00 · 553 阅读 · 0 评论 -
【学习笔记 40】 buu [MRCTF2020]你传你呢
0x00 知识点.htaccess文件上传绕过0x01 知识点详解什么是.htaccess文件?答:htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。怎么利用.htaccess文件进行上传?答:我们可以在.htaccess文件文件中加入php解析规则,比如,本题中就利用这个解析规则将jpg原创 2020-08-02 12:30:23 · 432 阅读 · 0 评论 -
【学习笔记 39】 buu [BJDCTF2020]ZJCTF,不过如此
0x00 知识点文件包含伪协议preg_replace()使用的/e模式可以存在远程执行代码0x01 知识点详解什么伪协议?答:PHP伪协议事实上就是支持的协议与封装协议一共有一下12种a. file:// — 访问本地文件系统b. http:// — 访问 HTTP(s) 网址c. ftp:// — 访问 FTP(s) URLsd. php:// — 访问各个输入/输出流(I/O streams)e. zlib:// — 压缩流f. data:// — 数据(RFC 23原创 2020-08-01 19:44:46 · 356 阅读 · 0 评论 -
【学习笔记 38】 buu [BJDCTF2020]The mystery of ip
0x00 知识点base_convert函数的利用bin2hex和hex2bin函数代码审计0x01 知识点详解base_convert函数的作用?答:base_convert() 函数在任意进制之间转换数字。bin2hex和hex2bin函数的作用?答:hex2bin() 函数把十六进制值的字符串转换为 ASCII 字符。bin2hex() 函数把 ASCII 字符的字符串转换为十六进制值。字符串可通过使用 pack() 函数再转换回去。0x02 解题思路1.打开网站就直接看原创 2020-08-01 17:22:59 · 289 阅读 · 0 评论 -
【学习笔记 37】 buu [BJDCTF2020]The mystery of ip
0x00 知识点tplmap探测是否存在模板注入漏洞smartly模板注入0x01 知识点详解tplmap的使用方法?答:这里只用到python tplmap.py -u 'curl',想了解详情的话这里附上一篇大佬的博客。什么是smartly模板引擎注入?答:这里参考这篇文章解题思路打开网站一看就看到了他提示的flag,那还不点开看看提示到了我的IP,这一瞬间就让我想到了http的请求头里的XXF参数和Client-ip参数,想了解http请求头详情的请去看我的上一篇文原创 2020-08-01 11:08:31 · 404 阅读 · 0 评论 -
【学习笔记 36】 buu [BJDCTF 2nd]假猪套天下第
0x00 知识点http数据包分析与修改0x01 知识点详解各项HTTP请求的意义?答:如果感觉这个图不够清晰,这里附上其他人的博客0x02 解题思路打开网站一看是一个登录界面,先用admin用户登录试试,但是报错,不让登录。用其他任意用户登录,用任意密码都可以直接登录。尝试用burp抓一下登录的包看看有没有什么有用的信息可以看到这里提示到了L0g1n.php网页,访问这个网页,抓包看看。这个提示要等99年后,那我们就去改一下time这个参数,把这个值给改的很大之后看到提原创 2020-07-31 18:47:23 · 256 阅读 · 2 评论 -
【学习笔记 35】 buu [SWPU2019]Web1
0x00 知识点bypass information_schema无列名注入0x01 知识点详解什么是information_schema?答:information_schema:简单来说,这个库在mysql中就是个信息数据库,它保存着mysql服务器所维护的所有其他数据库的信息,包括了数据库名,表名,字段名等。在注入中,infromation_schema库的作用无非就是可以获取到table_schema,table_name,column_name这些数据库内的信息。MySQL5.7原创 2020-07-31 12:17:18 · 270 阅读 · 0 评论 -
【学习笔记 34】 buu [BJDCTF2020]Mark loves cat
0x00 知识点/.git源码泄露代码审计变量覆盖漏洞0x01 知识点详解什么是变量覆盖漏洞?答:变量覆盖指的是用我们自定义的参数值替换程序原有的变量值,一般变量覆盖漏洞需要结合程序的其它功能来实现完整的攻击。 经常导致变量覆盖漏洞场景有:$$,extract()函数,parse_str()函数,import_request_variables()使用不当,开启了全局变量注册等。本题就是因为"$$"使得一个 可变变量获得了一个普通变量的值0x02 解题思路首先利用dirsearc原创 2020-07-31 00:07:28 · 370 阅读 · 0 评论 -
【学习笔记 33】 buu [ASIS 2019]Unicorn shop
0x00 知识点Unicode编码的安全问题0x01 知识点详解什么是Unicode编码安全?答:这个我解释不清楚,直接来链接:https://xz.aliyun.com/t/5402#toc-00x01 解体思路打开题后看到网站就是让我们买独角兽。网页上还有一句富兰克林的名人名言,请原谅我英语不好,看不懂!看看下边这四个商品,为什么有一个这么贵,不出意外,最贵的肯定就是我们最想要的。利用Ctrl+u查看源码看看有没有什么重要信息但是我一看除了utf-8的编码以外那些英语备注原创 2020-07-30 21:59:13 · 366 阅读 · 0 评论 -
【学习笔记 32】 buu [GKCTF2020]cve版签到
0x00 知识点cve-2020-7066利用0x01 知识点详解cve-2020-7066怎么利用?答:在低于7.2.29的PHP版本7.2.x,低于7.3.16的7.3.x和低于7.4.4的7.4.x中,将get_headers()与用户提供的URL一起使用时,如果URL包含零(\ 0)字符,则 URL将被静默地截断。 这可能会导致某些软件对get_headers()的目标做出错误的假设,并可能将某些信息发送到错误的服务器。这里配上cve连接https://bugs.php.net/bu原创 2020-07-30 20:58:13 · 388 阅读 · 0 评论 -
【学习笔记10】buu [ZJCTF 2019]NiZhuanSiWei
打开一看<?php$text=$_GET["text"];$file=$_GET["file"];$password=$_GET["password"];if(isset($text)&&(file_get_contents($text,'r')==="welcometothezjctf")){echo"<br><...原创 2020-05-06 18:29:34 · 448 阅读 · 0 评论 -
【学习笔记9】buu [ACTF2020 新生赛]Include
点进去一看,tip让你点击一下ok,点一下先查看一下源码,什么都没有,看到上面的file=flag.php,还用想,这不就是经典php://filter伪协议的利用吗,首先(注:知识点)php://filter当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,阻止其不执行。从而导致任意文件读取。进行尝试首先直接读取php://filter...原创 2020-05-06 18:33:12 · 153 阅读 · 0 评论 -
【学习笔记8】buu [HCTF 2018]WarmUp
1.点开一看发现一个表情包,f12查看源码发现提示让去找source.php页面,转到source.php页面后看到如下代码,日常代码审计,再看其中提到了hint.php,接下来跳转到hint.php看,提示flag not here, and flag in ffffllllaaaagggg<?phphighlight_file(__FILE__);//指定地址cla...原创 2020-05-06 18:39:02 · 222 阅读 · 0 评论 -
【学习笔记7】buu [CISCN2019 华北赛区 Day2 Web1]Hack World
点开后就看到首行就有这么明显的提示,答案在flag表的,flag列里尝试一下,发现除了1,2其他的都被过滤了,没有思路,不过最后在网上找到了,这道题的源码,刺激<?php$dbuser='root';$dbpass='root';function safe($sql){ $blackList = array(' ','||','#','-',';','&','+','...原创 2020-05-06 18:57:01 · 262 阅读 · 1 评论 -
【学习笔记6】 buu [ACTF2020 新生赛]Exec
打开看到这样一个界面,根据做题经验,这应该是一道考察命令执行的题,但是老套路,先看看源码里有什么通过查看源码发现什么否没有那什么都说了,直接开始尝试首先因为是让你ping一个地址,这里我们尝试127.0.0.1显示给127.0.0.1发送了对应数据包,说明ping命令执行成功了,那么我们是不是就可以利用“|”来连接另外一个命令来执行从而得到flag,所以构造pa...原创 2020-05-07 15:44:38 · 376 阅读 · 0 评论 -
【学习笔记5】buu [ACTF2020 新生赛]Upload
点进去一看发现什么都没有,就一个电灯泡实属瞩目点一下看看,显示出来一个让你上传东西的地方开始操作,先上传一个php文件,不行,直接报错,提示可以上传,jpg,png,gif格式,ok那就弄一个一句话木马,将后缀改成jpg上传,成功,上传成功,并在左上角显示了上传路径,说明它对上传文件内容没有做验证,接下来再上传一遍同时用bp抓包将jpg后缀改成php。显示上传失败,查看源码...原创 2020-05-07 16:50:22 · 434 阅读 · 2 评论 -
【学习笔记4】buu [ACTF2020 新生赛]BackupFile
打开后首先看到一行提示,提示说让我们找到备份的文件,找找看,最后试出是index.php.bak,下载下来后打开看看。<?phpinclude_once "flag.php";//包含一次flag.phpif(isset($_GET['key'])) { $key = $_GET['key']; if(!is_numeric($key)) {//如果传入值不...原创 2020-05-08 16:52:51 · 520 阅读 · 0 评论 -
【学习笔记3】buu [GXYCTF2019]禁止套娃
知识点:1. /.git泄露2.无参数RCE3.各种php函数的使用解题首先登录进去后发现什么都没有,查看源码,抓包也什么都没信息,去瞄了一眼大佬的wp知道了这是.git文件泄露从而导致的源码的泄露,不过别人是用扫描器跑出来的,可是我试了一试,因为我请求的次数太多,什么都没有跑出来。不过知道后就可以用Githack脚本跑了,这个脚本是python2环境,可以放在kali下跑,命令就是p...原创 2020-05-08 19:19:57 · 381 阅读 · 0 评论 -
【学习笔记2】buu [BJDCTF 2nd]fake google
点进去一看什么都没有,在搜索栏随便敲了个1上去,搜索一下查看源码<!--ssssssti & a little trick --> P3's girlfirend is : 1<br><hr>这提示简直不要更明显就是SSTI继续输入{{7*7}},发现给出了49的运算结果,怎么这么像我之前看到的flask模板注入呢。执行我之前搜集...原创 2020-05-09 22:01:12 · 260 阅读 · 0 评论 -
【学习笔记1】buu [GXYCTF2019]Ping Ping Ping
打开网站后,一眼就看到这样的提示,让你传个ip,传一下试试是什么,这里我们就用127.0.0.1试试发现这是这是ping了一下传的ip,那这就是经典的命令执行了,首先执行ls看看都有什么文件有flag.php,index.php两个,很明显flag就在flag.php里,首先所以可以尝试构造怕payload/?ip=127.0.0.1|cat flag.php不...原创 2020-05-09 22:59:58 · 352 阅读 · 0 评论 -
【学习笔记11】[2020年 网鼎杯 web] AreUSerialz
我唯一可以写出来的web题,所以身为菜鸡的我就过来更新一篇wp了打开一看一长串代码那就开始审计吧 <?phpinclude("flag.php");highlight_file(__FILE__);class FileHandler { protected $op; protected $filename; protected $content;...原创 2020-05-10 17:41:23 · 215 阅读 · 0 评论 -
【学习笔记12】buu [De1CTF 2019]SSRF Me
打开后看到一堆代码,根本看不懂,不过还好题目上给出了源码的下载位置,并且提示flag is in ./flag.txt,那啥都都不说了,先把源码下载下来吧。#! /usr/bin/env python#encoding=utf-8from flask import Flaskfrom flask import requestimport socketimport hashl...原创 2020-05-12 16:38:06 · 370 阅读 · 0 评论 -
【学习笔记13】buu [2020年 网鼎杯 web] filejava
首先打开网站后就看到了一个明显的上传位置,任意传一个文件,显示上传成功,并且可以下载,用bp抓一下下载的流量包,显示可以看到可以读取下载文件的内容,那我们试试能不能读取其他文件,如/etc/passwd,可以读取,接下来就尝试读取配置文件WEB-INF/web.xml这里因为不知道配置文件的具体位置就用../来代替具体多少慢慢试,可以看到再其中显示的各个文件,以...原创 2020-05-13 21:13:50 · 498 阅读 · 1 评论 -
【学习笔记14】buu [BJDCTF 2nd]old-hack
首先打开网站一看,映入眼球,thinkphp,但是不知道是什么版本的所以就想办法构造一个报错来让它显示一些更详细的信息http://59429912-fc6a-4d2d-945a-c1aabf47f19f.node3.buuoj.cn/?s=3这样就可以看到thinkphp的版本了是5.0.23版本接下来就简单了求助度娘,查找thinkphp5.0.23对应版本的漏洞最后在...原创 2020-05-14 14:33:11 · 340 阅读 · 0 评论 -
【学习笔记15】buu [BUUCTF 2018]Online Tool
打开一看,发现给了一大串代码,接下来进行审计if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){$_SERVER['REMOTE_ADDR']=$_SERVER['HTTP_X_FORWARDED_FOR'];} //首先看到前两行代码X_FORWARDED_FOR和REMOTE_ADDR这里是让服务器用来获取ip用...原创 2020-05-15 23:12:26 · 665 阅读 · 0 评论 -
【学习笔记16】buu [SUCTF 2019]Pythonginx
打开一看发现给了一堆代码这样看不方便我们就去查看源码 @app.route('/getUrl', methods=['GET', 'POST'])def getUrl(): url = request.args.get("url") host = parse.urlparse(url).hostname if host == '...原创 2020-05-16 10:22:00 · 641 阅读 · 0 评论 -
【学习笔记17】buu [安洵杯 2019]easy_web
点开网站后就看到这样一个网站,在查看url的时候看到img的这个参数有问题,研究一下,发现这串“TXpVek5UTTFNbVUzTURabE5qYz0”字符,经过两次base64解密后变成了这个“3535352e706e67”,回忆一下发现在这个指好像在winhex的hex代码中见过相似的,那就用Winhex新建一个文件之后把这串解出来的字符放进去看看是什么。对应的是555...原创 2020-05-17 15:37:50 · 407 阅读 · 0 评论 -
【学习笔记19】实验吧 让我进去
知识点MD5拓展攻击解题思路打开网站后看到,什么都没有,尝试抓包分析360截图17860604827894.PNGBurp 抓包发现,Cookie有东西。先是把source=0改成source=1,得到源码。、、、<?php$flag = "XXXXXXXXXXXXXXXXXXXXXXX";$secret = "XXXXXXXXXXXXXXX"; // 密码...原创 2020-06-22 21:26:32 · 237 阅读 · 0 评论 -
【学习笔记 20】buu [BJDCTF2020]Easy MD5
知识点password='".md5($pass,true)."'解题360截图17290429273651.PNG360截图17891228296729.PNG这里可以看到是通过get参数进行传参,但是这里也没有其他的提示,尝试传统的抓包,等分析没有得到有用信息,查看大佬wp,知道了其中调用了这样的函数password='".md5($pass,true)....原创 2020-06-23 13:11:48 · 267 阅读 · 0 评论 -
【学习笔记 31】 buu [0CTF 2016]piapiapia
0x00 知识点网站目录的扫描(源码泄露)代码审计PHP反序列化字符逃逸0x01 知识点详解网站目录扫描工具都是那几种?答:这里不单单是指常规的御剑,还包括dirsearch,dirb,nikto等工具,一定要多积累一些这样的工具,不然遇到这种同样的源码泄露,或者有robots.txt文件的题都没法下手。什么是PHP反序列化字符逃逸?答:这里引用一个大佬的例子,感觉很是清晰明了,之后我也会自己再详细学习。序列化<?php$a = array('123', 'abc', '原创 2020-07-30 18:08:59 · 446 阅读 · 0 评论 -
【学习笔记 30】 buu [GXYCTF2019]BabySQli
0x00 知识点联合注入base32+base64通过联合注入向数据库中写数据0x01 知识点详解1. 利用联合注入向数据库里写东西的原因?答:在使用联合注入时,如果你查询的数据不存在,那么就会生成一个内容为null的虚拟数据,所以这是我们就可以在注入时添加我们需要的信息来完成我们的目的。2. base32和base64的区别?答:base32是全部由大写字母和数字构成,或者其结尾有三个等号base64则是由大小写字母和数字一起构成。0x02 解题思路打开网站看到一个登录页面尝原创 2020-07-29 11:31:12 · 418 阅读 · 0 评论 -
【学习笔记 29】 buu [极客大挑战 2019]HardSQL
0x00 知识点sql报错注入通过left,right来查询不同内容0x01 知识点详解什么是报错注入?答:其原因主要是因为虚拟表的主键重复。按照MySQL的官方说法,group by要进行两次运算,第一次是拿group by后面的字段值到虚拟表中去对比前,首先获取group by后面的值;第二次是假设group by后面的字段的值在虚拟表中不存在,那就需要把它插入到虚拟表中,这里在插入时会进行第二次运算,由于rand函数存在一定的随机性,所以第二次运算的结果可能与第一次运算的结果不一致,但原创 2020-07-28 23:31:24 · 173 阅读 · 0 评论