- 博客(73)
- 收藏
- 关注
原创 [CISCN2019 华北赛区 Day1 Web5]CyberPunk
w:表示文件只可写,此时读取文件内容会报错:io.UnsupportedOperation: not readable;r+:表示文件既可读,也可写,发现上面的change.php的address只加了一个addslashes,而没有进行别的识别。因此只需要在change.php的位置用报错注入就行?或许可以用来报错注入。所以说,有注册,又把注册的内容拿出来用的时候,要想到二次注入。w+:表示文件既可读,也可写,如果文件存在,每次打开文件时,说明flag不在数据库里面。
2023-12-05 14:20:38 1063
原创 [CISCN2019 华北赛区 Day1 Web1]Dropbox
<a href="#" class="download">下载</a> / <a href="#" class="delete">删除</a>
2023-12-05 14:17:56 1002
原创 [GWCTF 2019]枯燥的抽奖
抽奖,就是那么枯燥且无味,给你flag{xxxxxxxxx}</p>";刚刚在纠结他show_source是如何不把flagshow出来的。当我们创建了一个session的时候,就会往这个$_SESSION里面加入一个seed变量。echo "<p id=flag>没抽中哦,再试试吧
2023-12-05 14:13:21 1036
原创 [WUSTCTF2020]CV Maker
准备z.php和一个真jpg图片用cmd命令行输入:copy 1.jpg/b+z.php/a 2.jpg。可以看到已经上传成功,甚至都没检查文件名。(一般来说图片马是要搭配文件包含漏洞的。参数/a指定以ascll格式复制合并文件。这里有一个文件上传。猜测是文件上传漏洞。改了php后缀或者不合适的情况,会出现。参数/b指定以二进制格式复制合并文件。看了半天没什么头绪。
2023-12-05 14:10:44 423
原创 [CSCCTF 2019 Qual]FlaskLight
一打__globals__ 就出问题。因此判断防火墙有识别,识别了__globals__。
2023-12-05 14:09:31 393
原创 [CISCN2019 华北赛区 Day1 Web2]ikun
栈区( stack ) 由 Python 的列表( list )实现 , 作为流数据处理过程中的暂存区 , 在不断的进出栈过程中完成对数据流的反序列化操作,并最终在栈顶生成反序列化的结果 标签区( memo ) 由 Python 的字典( dict )实现 , 可以看作是数据索引或者标记 , 为 PVM 的整个生命周期提供存储功能 .简单来说就是将反序列化完成的数据以 key-value 的形式储存在memo中,以便使用。pickle是python语言的一个标准模块,实现了基本的数据序列化和反序列化。
2023-12-05 14:07:40 900
原创 [Zer0pts2020]Can you guess it?
函数会返回路径中的文件名部分 假如路径是/index.php/config.php 浏览器的解析结果都是index.php 而basename会返回config.php 就算后面跟上多余的字符也会返回文件名部分。// 以及还满足basename()之后能得到config.php。
2023-12-05 14:03:52 430
原创 [FBCTF2019]RCEService
也就是cat这个命令是不能直接用的,因为环境变量临时被修改了,所以必须用/bin/cat才可以。并且还需要/bin/cat 不知道为什么?但是过滤了一些内容: . | * 等。preg_match()的!这里为了避免调用系统命令,就可以。加了一个%0a居然就绕过了?
2023-12-05 14:03:13 431
原创 [MRCTF2020]套娃
我们需要传入b_u_p_t变量,但是又不能有 _ 或者 %5f。因此传入b%20u%20p%20t 即可。本地测试如下,可以看到已经识别变量成功了。
2023-12-05 13:58:40 376
原创 [极客大挑战 2019]RCE ME
那么访问POC,指向的是tmp/../../../../etc/passwd,tmp/../../../就是/var目录,/var/../etc/passwd恰好可以读取到etc目录下的passwd,从而达到跨目录访问的效果。此时SD=a/a/a/a,而a/a/a/a/../../../../=/var/www/html,符合open_basedir的限制,创建成功。先选取一台具有sendmail的机器,笔者是使用kali,先在php中写入如下代码。但是在那个buu上面却测试成功了,好坑啊!
2023-12-05 13:53:43 787
原创 [0CTF 2016]piapiapia
整理一下流程:我们只需要传入参数,到nickname时,用数组来绕过,并且加入多个where,这时候序列化后的nickname会很长,其对应的长度也很长,然而我们的where会被过滤替换成hacker,这时候5个字符变成了6个字符。我们发现nickname在photo的前面,因此我们如果能将nickname对应的值进行修改,就能构造一个s:n:"xxx"出来,从而直接访问。PHP反序列化中读取字符的多少,是由表示长度的数字控制的,而且如果整个字符串的前一部分成功反序列化,
2023-12-05 13:46:44 958
原创 [SUCTF 2019]Pythonginx
在Python程序内部,通常使用的字符串为unicode编码,这样的字符串字符是一种内存编码格式,如果将这些数据存储到文件或是记录日志的时候,就需要将unicode编码的字符串转换为特定字符集的存储编码格式,比如:UTF-8、GBK等等,很多时候Python程序员都会遇到乱码问题,相信以下的一些处理方式和技巧能帮助大家解决乱码问题。通过idna编码:print('℆'.encode('idna')) 结果b'c/u' 因此通过这个就能实现漏洞利用。return "我扌 your problem?
2023-12-05 13:45:37 454
原创 [BJDCTF2020]EasySearch
首先,介绍下SHTML,在SHTML文件中使用SSI指令引用其他的html文件(#include),此时服务器会将SHTML中包含的SSI指令解释,再传送给客户端,此时的HTML中就不再有SSI指令了。SSI是嵌入HTML页面中的指令,在页面被提供时由服务器进行运算,以对现有HTML页面增加动态生成的内容,而无须通过CGI程序提供其整个页面,或者使用其他动态技术。从技术角度上来说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针,即允许通过在HTML页面注入脚本或远程执行任意代码。
2023-12-05 13:44:59 831
原创 [极客⼤挑战 2019]FinalSQL
⽤之前的脚本,注意request库的get请求⽤的是param作为参数传递,⽽post⽤的是data。使⽤geek数据库获取表名,修改代码为:sql =使⽤F1nal1y表获取列名:sql =
2023-12-03 21:16:52 557
原创 [SWPU2019]Web1
⾛后⾯的流程也出现问题了。发现information_schema表被过滤了。所以使⽤:mysql.innodb_table_stats。⽐如我输⼊下⾯的内容,可以看到我的内容全部综合到了如下的表中。得到database是web1。接下来要学习新的东⻄:⽆列名注⼊。
2023-12-03 21:14:49 354
原创 [MRCTF2020]PYWebsite
有点脑筋急转弯了,我⾃⼰代表着: x-forward-for=127.0.0.1。是⼀个前端验证,但是后端也验证的题⽬。
2023-12-03 21:10:40 359
原创 [CISCN 2019 初赛]Love Math
可以获得hex2bin字符串。还需要知道⼀个知识点如下⽅法可以执⾏函数。(ps:有些⽤法需要⾼级别的php才能⾏)我们想办法构造⼀个system($_GET{1})即可。ps:{ }可以代替[ ]下图成功执⾏了echo system('ls');这题想都不⽤想,⽆参数rce。题⽬如下,⼏层过滤检测。最终发现可以⽤的:;
2023-12-03 21:10:03 374
原创 [⽹鼎杯 2020 朱雀组]Nmap
要值得⼀提的是,这个弄完之后会有很多转译符,原因在于本来nmap就是执⾏相关的,因此很多都需要转译,⽐如 | > < { \ ' " 等等。这个题和上⾯那个nmap是⼀样的。只是过滤了下php罢了。其实就是参数值跳出来变成参数选项。细节之前已经说的差不多了。⽤phtml绕过就⾏。前⾯已经分析得很多了。
2023-12-03 21:07:45 425
原创 [WesternCTF201tian8]shrine
Since config, self ( 和 ) can not be used, in order to get config information, it is necessary to access config。ps:关于format的学习:因为format⾥⾯有关键字{ },因此如果在字符串⾥就想要输⼊{或者}的话,那就输⼊两个。可以访问/shirine/xxx,后⾯的值作为参数传⼊进去。这题的模版注⼊不准⽤( )、config、self。{{或两个}},最终字符串内会有⼀个{或者}。
2023-12-03 21:06:30 337
原创 [安洵杯 2019]easy_serialize_php
要买以下⼏个商品,选择前三个都显示了wrong commodity。选择第四个要么钱不够,要么只能⼀个char。
2023-12-03 20:57:04 335
原创 [安洵杯 2019]easy_serialize_php
核⼼思想:由于把数据过滤后,序列化后的元素⻓度字段还是不变的,因此就会造成把序列化的结构当作值的内容来读取了。最终得到payload如下,两个重点,1、格式要规整;2、要“吃”掉后⾯函数⾥定义的img。这题利⽤的关键就是对序列化后的数据进⾏过滤。过滤的⽅式就是直接把字符替换为空字符。下⾯讲filter前后、最后重新反序列化的字符串进⾏输出来对⽐。上⾯的是过滤键值,下⾯过滤键名也是ok的。下⾯的步骤和值替换⼀样。
2023-12-03 20:45:20 374
原创 [强⽹杯 2019]⾼明的⿊客
下载了⼀个压缩包,⾥⾯⼀堆php⽂件。但是很多都是下⾯这样⽆效的。下⾯的脚本是⼀个模版,利⽤了多线程来测试的。⽅法就是正则匹配+输⼊后是否回显。因此需要写个脚本找到有效的。
2023-12-03 20:43:43 323
原创 [BJDCTF2020]Cookie is so stable
最终http://localhost/?num=2e5&md5=0e215962017&get_flag=sort%09flag即可。找⼀个本身是0e开头的,md5后也是0e开头的就⾏。跑出来⼀个结果0e215962017。原因在于"=="弱类型⽐较。⾸先第⼀个部分的绕过,这个就是intval的错误使⽤了。对于科学计数法的字符,intval会截取e前⾯的部。但是⼀旦 字符串+1 这就会导致强⾏类型转换,转换成了数字。⽽intval对于数字不会做任何处理。%09是tab的意思 %20空格 %0a换⾏。
2023-12-03 20:39:22 479
原创 [BJDCTF2020]Cookie is so stable
是⼀道模版注⼊题⽬,但是有很多关键词被过滤了。按照右边流程图来就⾏。最后发现是twig。
2023-12-03 20:32:45 349
原创 [安洵杯 2019]easy_web
这个之前没做过,之前都是include相关的include相关的就可以⽤伪协议之类的。找两个md5值相同的,再利⽤sort /flag即可。(sort是将⽂件内容进⾏排序。但是后⾯发现不可⾏,这个只能⽤于查看index.php,看源码。屏蔽了⼀⼤堆,然后来了个md5的强等。想办法绕过flag关键字。这题正则匹配有个问题。
2023-12-03 20:31:21 482
原创 [BJDCTF2020]Mark loves cat
get 传参数的时候,如果传⼊1,默认:做为键:类型是 int;做为值,类型是 string。所以poc:http://localhost/?handsome处理的绕过就是不能?y=任意&flag=y。然⽽只要有flag的话,就会导致$flag变量被修改。is的绕过就是不能flag=flag。下⾯思考⼀下利⽤最下⾯的解法。⾸先不能⽤get的flag。yds的绕过必须有flag。这题⽬测应该有很多个解。
2023-11-30 18:45:53 354
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人