- 博客(51)
- 收藏
- 关注
原创 [SWPUCTF 2022 新生赛]numgame
这道题有点东西网页一段计算框,只有加和减数字,但是永远到大不了20,页面也没啥特别的,准备看源码,但是打不开,我以为是环境坏掉了,看wp别人也这样,只不过大佬的开发者工具可以打开,我的就不行最后试了一下,你要么就在网页右上角更多工具里面手动打开,要么就另外打开一个网页,然后先打开开发者工具再加载题目url在代码此处有一段src标签,好像是一个JavaScript的代码,但是利于工具看的时候,页面并没有对应回显,看起来是个路径,可以访问一下。
2023-08-07 10:10:30
959
4
原创 shrine
模版注入,这里已经给出了两个路由,一个跟路由给出了网页的源码,另外一个有两处过滤第一处是将()小括号替换为空,意味着我们不能直接使用os模块了第二处是过滤掉了config,和self两个关键字`['{{% set {}=None%}}'.format(c) for c in blacklist]`这部分代码会遍历`blacklist`列表中的每个元素,将其插入到`{{% set {}=None%}}`字符串模板中的占位符`{}`处,生成对应的变量赋值语句。
2023-07-24 15:48:12
98
原创 [BSidesCF 2020]Had a bad day1
这个是利用strops检测file变量中是否包含wofers或meowers或者index的值,如果有,就执行文件包含,那我们还是可以直接进行伪协议的传参。但主要是有,参数的传递,加上前面的index.php,想到了PHP伪协议,或许我们可以直接查看一下隐藏源码。仔细查看报错信息,发现参数在传递的过程中,会自动加上一个.php后缀,所以我们直接去掉后缀就行。进入环境,一上来就是一段激励的话,没有啥特别的,源码中也没有看见啥有用的提示。解码后会得到一串base64字符串,我们可以直接拿去解码,得到源码信息。
2023-07-24 15:04:43
336
原创 [网鼎杯 2020 朱雀组]phpweb1
进入环境后就是一串报错和一张图片,主要是这个网页一直莫名抽搐看源码得知是一个post请求方法,还有传入了两个参数,那就抓包看看抓包后参数没有变化,还是这个发送到重发器后,我才得知这个报错信息,原来就是,data函数的报错信息,那我们就可以猜测这个两个参数之间的关系,是我们可以利用var_dump函数测试一下发现确实存在命令执行的页面回显,那我们是不是直接可以本来想直接利用scandir查看当前目录下的所有文件的,但是用法出了点问题查看了wp,得知可以用。
2023-07-24 13:53:35
164
原创 supersqli
查询数据库,发现正则过滤,并且不区分大小写,尝试过/**/注释符对select分隔,但是识别不了,哪还有一种方法就是堆叠注入。查表,只包含两个表,但是select被过滤掉了,所以我们可以使用show columns来查看表中字段。这个时候就要发散一下思维,可以看到之间传参1所回显的数据,和words表字段的结构其实是差不多的。这里就是默认将接受到的参数传递给words表的id字段,然后回显id字段对应的字符串数据。尽量一次性做完哦,不然有可能变成以下这样,其实变成这样,也可以验证咱的思路。
2023-07-24 10:38:13
415
原创 Web_python_template_injection
看了一眼wp,说包含一个file,可以读取数据,这道题应该是在python2,因为在之前的学习中,得知file读取函数在python3中已经被取消掉了。但是如果直接访问的话,就会利用url报错,将结果给执行带出来,那说明我就可以直接利用这个性质进行ssti模版漏洞注入。考察模版Python flask的模版注入,页面没有回显,只有一段字符串,尝试直接利用Python传参。我们可以利用config,在config里内置了os,模块。然后使用偶数,调用popen函数,执行ls命令查找到flag所在地。
2023-07-24 09:42:36
60
原创 [护网杯 2018]easy_tornado1
普通的cookie并不安全,可以通过客户端修改在Tornado框架中,cookie_secret是一个密钥,一般使用随机生成的字符串,被用于对生成的cookie进行加密。它的作用是确保cookie的安全性,防止被修改或伪造。具体来说,当Tornado应用程序使用set_secure_cookie()函数设置cookie时,会使用cookie_secret对cookie进行加密。而在获取cookie时,Tornado则会使用同样的密钥进行解密,并验证cookie是否被篡改。
2023-07-24 09:18:13
409
原创 SSTI无过滤
一开始利用find命令寻找flag所在,一直没找到,找半天最后flag就在app目录下的模版文件里面,浪费好多时间。打开环境后就只有一段文字,说密码错误,来回看了源码,抓包都没有什么提示,并且也没有有任何的传参显示。回显一大堆object下的子类信息,我们运行下面的脚本,将我们需要的os模块的位置找出来。最后想来想去,终于灵机一动,这段文字就是在提示我们,可传的参数为password。既然的SSTI,我们就可以直接开始构造payload,判断模版类型。最后一步到位,执行popen函数,查看当前所有的文件。
2023-07-22 23:04:01
86
原创 攻防世界-WEB2
然后,通过 ord() 函数获取 $_c 字符的 ASCII 值,并+ 1,然后利用chr()函数,将数据转换为字符后重新赋值给$c。循环结束后,将 $_ 变量进行base64编码,然后再利用strrev函数倒序,最后使用ROT13 编码,return返回最终值。接着使用一个for循环,接着,遍历 $_o 中的每个字符。设定临时参数$_0初值为0,退出条件为。将接收的变量利用strrev函数进行字符串反转,并赋值给$_o。将$_c 存储的字符追加到 $_ 变量中。表示下标的字符,存储在 $_c 变量中。
2023-07-11 15:13:35
684
原创 fileinclude
看题目提示,应该是一道文件包含的题目,打开环境后直接告诉我flag在flag.php里但是因为不知道绝对路径,不能直接利用file读取查看源码后,发现里面嵌入了一段php代码。
2023-07-10 11:37:40
995
1
原创 inget
应该是存在sql注入,然后根据题目猜测可能是get类型的注入。最后尝试了一下万能密码?id=1' or 1=1--+虽然没有回显,但是可以利用sqlmap查看数据库的信息。以上语句构造出来全都没有反应,页面也没有任何的变化。进入环境后,提示我们需要传入id,并且尝试绕过。
2023-07-10 10:08:20
162
原创 [SWPUCTF 2021 新生赛]jicao
点进去后是一段php代码包含了flag.php文件,设定了一个POST请求的id和GET请求的json语句会对GET请求的数据进行json解码如果id和json变量的值都等于设定字符串,打印flag。
2023-07-10 00:08:22
2819
原创 easyupload
这时,我们可以利用f12查看到index.php文件的上传路径和文件路径是一样的,所以我们可以直接利用蚁剑去包含。尝试.php. 绕过 (windows中会把后缀名最后的空格和. 省略,即上传.php.绕过后会变为.php)怪不得加入文件头的图片后缀文件(.png|.jpg|.gif)也不行,所以我们可以利用一个php短标签。但是上传完成后,如果想要usr.ini文件发挥作用,我们需要先访问一个同目录下的php文件。但是加入文件头的图片后缀文件(.png|.jpg|.gif)也不行,这就有点搞。
2023-07-09 23:32:38
595
原创 文件上传常用绕过方式
这里能绕过的原理是因为windows的NTFS文件系统的一个特性,windows都适用在window的时候如果文件名+::$DATA会把::$DATA之后的数据当成文件流处理,不会检测后缀名且保持::$DATA之前的文件名,他的目的就是不检查后缀名也就是当我们访问时,也就是相当于访问a.php本身当我们访问时,也就是访问ab文件夹下的a.php文件本身。
2023-07-09 22:14:40
3551
原创 [简单] 初识RSA
其中,n=p q,p和q均为大质数,根据欧拉公式φn = (p-1)(q-1),e就是与φn互质的一个数。根据代码提示pq = p*(q-1)和qp = q*(p-1),有因为n = pq,所以。首先复习一下RSA算法:RSA算法包含公钥(n,e) 和私钥(n,d)加密m^e mod N =c解密 c^d mod N = m。在RSA加密中,明文m通过公钥进行加密得到密文c,即。在RSA解密中,密文c通过私钥进行解密得到明文m,即。d是e在模 (p-1)*(q-1) 意义下的逆元。
2023-07-05 23:04:41
1060
原创 [网鼎杯 2020 青龙组]AreUSerialz1
如果 $str 经过 is_valid() 函数的检查,返回 true,则使用 unserialize() 函数对 $str 进行反序列化操作,并将结果赋值给变量 $obj。op,filename,$content三个变量权限都是protected,而protected权限的变量在序列化的时会有%00*%00字符,%00字符的ASCII码为0,就无法通过上面的is_valid函数校验。则将 $op 的值修改为 "1",并清空 $content,然后再次调用 process() 方法。
2023-07-05 20:44:07
762
原创 [ZJCTF 2019]NiZhuanSiWei1
根据提示信息,可知需要三个参数:text,file,password,且 text 的文本内容也已经限定,那么桌面建立一个文本文档,内容为:welcome to the zjctf,尝试用PHP伪协议 file 协议读取,发现没有反应。内层if语句是一个正则表达式,如果file变量中有flag字符就直接退出程序,反之就包含file变量,继续将password进行反序化,输出。看到注释的flag.php,继续访问,在网页源码中得到提示:现在还不能给我flag,说明方向是对的,已经走到最后一步了。
2023-07-05 14:15:52
368
原创 攻防世界_web
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的。但是0如果用布尔值表示的话就是假,所以这里传入的参数不能直接为0 ,我们应该传入一个字符,因为字符与数字比较的话,会将字符转化为0再进行比较。初级题就是初级题,访问后得到提示,如果没做过我估计还不知道该咋整,这也是一个文件我们可以直接访问,最后得到flag。进去环境,就看到一个访问1.php的页面回显,想到题目提示的初始页面,尝试访问index。
2023-07-04 22:35:57
212
原创 unserialize3
看着这个源码长度,就觉着比较简单本题就一个__wakeup方法需要绕过,但是不对哦没有提示也不知道该参数得多少呀本来都要复制进编译器写了,发现源码闭合有点问题,可能是做了隐藏。
2023-07-03 20:31:54
127
原创 Web_php_unserialize
_wakeup()方法是在进行反序列化之前进行调用,主要目的是为了检测file属性里是不是index.php,如果不是就重新赋值为index.php。__destruct()方法是在对象不再使用时自动调用,这里的主要目的是高亮显示file属性里的数据,并以字符串的形式回显出来。既然绕过了__wakeup方法,说明file属性不会被强制赋值和检测,所以我们可以直接将file属性的值改为flag.php。绕过方式:当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行。
2023-07-03 17:52:08
333
原创 被偷走的文件
分离出来的rar文件需要密码,拿去爆破一下,但是到现在也没有得到密码的提示,也就是说不知道密码是多少位,是数字还是字符的提示,我还没看到,所以是伪加密的可能性要多点。既然是文件被盗走,可能跟文件传输协议ftp有关,过滤一下ftp。但是他RAR文件打开我真是看不懂,还是硬着头皮破解一下看看。跟踪流后发现有一个flag.rar文件,是内嵌的吗?那说明应该也可以利用binwal分出来吧。确认真加密,真的破出来了,牛。也是一道流量解析题目。
2023-07-03 00:02:28
197
原创 [RoarCTF 2019]Easy Calc1
看这个输入框,所以我猜测可能是sql注入,弹出了一个对话框,说算不来,说明可能存在过滤最后发现只要传入字母都会触发弹窗,应该跟题目设定有关系,这只是一个简单的计算器而已查看了一下源码,发现有一个传参,访问一下calc.php文件访问后得到一串php源码首先建立了一个黑名单列表,然后是一个foreach循环,用于遍历$blacklist数组中的每个元素。在循环中,blackitem变量被赋值为blacklist数组中的当前元素。然后,循环体内的代码会执行,可以对$blackitem进行任何操作。
2023-07-02 22:32:08
881
原创 web258
在Cookie中过滤以o或者c开头加:加任意数字最后以:结尾的不区分大小写的字符串。经过查看wp,因为序列化后是对象,以o开头,所以对原数据进行字符串替换,将。与上一题的区别就是,在最后反序化之前做了一个正则表达式。如果还是private私有可见的话,不会取得预想效果。关于这个,比较不容易注意到的一个点就是属性的。具体意义:猜测是因为:后跟数字,表示正数吧。可见性要设定为public。
2023-07-02 14:35:55
190
原创 web256-257
最后如果没有cookie信息,就抓包后自行添加,然后GET方法传入username和password参数,就可以获得flag。因为在类中都是单独用===比较,所以只需要将username重新赋值就好,最后再序列化编码输出。对于上一题,这题关键点在于让username不等于password。
2023-07-01 23:04:44
243
原创 Unencode
Uuencode编码每60个将输出为独立的一行(相当于45个输入字节),每行的开头会加上长度字符,除了最后一行之外,长度字符都应该是“M”这个ASCII字符(77=32+45),最后一行的长度字符为32+剩下的字节数目这个ASCII字符。这三个字节共有24个Bit,以6-bit为单位分为4个组,每个组以十进制来表示所出现的数值只会落在0到63之间。Uuencode是二进制信息和文字信息之间的转换编码,也就是机器和人眼识读的转换。如果最后剩下的文字少于三个字节,不够的部份用零补齐。三个字节为单位进行编码。
2023-06-22 23:24:23
577
原创 权限获得第一步
根据题目提示flag就是某个密码,并且flag不是常规形式打开文件后看起来是一个linux的用户密码段反正最后两个最可疑了,linux中密码的存储形式是MD5加密第一个数据解码失败第二个密文解密成功果然不是常规形式,常规的flag一本都是是英文加数字的字符串。
2023-06-20 15:39:24
268
原创 [第一章 web入门]SQL注入-2
因为爆破的数据较长,而且burp爆破模块我这里不知道咋自动排序,所以可以采取导出数据存储为excel排序输出,或者用一段python代码输出。这种登录界面一般都是字符型注入,所以测试一下闭合符,没想到页面回显账号不存在。如果爆不出来,有很多429状态码的响应页时,可以考虑换网络或者降低爆破线程。但是居然没提示,我都检查了好几遍我注入的语句是否正确,最后还是看wp出来的。知道数据库长度后,我们就利用burp抓包进行爆破,按照顺序获得数据库名称。访问login.php后,是一个登录界面,直接测试注入类型。
2023-06-11 23:19:18
440
原创 [网鼎杯 2018]Fakebook1
结合起来得出结论,以上代码存在ssrf和反序列化,当我们注册后,把我们的信息序列化一下,然后存进data。注册的其他行数据,差不多都可以乱填,只有一个blog项,估计是后台做了一些限制(必须包含某些字符之类的),随便填会报错。得到关键信息,前面都没有注意这段报错信息,这里包含了一个反序列化函数,和一段路径,后面会用到。路径是之前注入的时候报错爆出来的,序列化值也不用自己生成,之前注入出来了,改长度和值就行。因为出现上面的情况,所以猜测不是字符型注入,用了一点小方法,出现计算,说明是整数型注入。
2023-06-08 20:55:46
1274
原创 PHP——流程控制语句
如:一个班级的考试成绩,如果是80分以上为“优秀”,60-80分为“良好”,60分以下为“不合格”,这时候就需要用到elseif语句来执行(也可以写作else if)还有一个函数rand,也是生成随机数的函数,不过根据菜鸟提示,mt_rand函数相较于rand函数来说速度更快,但基本语法没有区别,前期学习都可了解。几乎所有程序设计语言都有if语句,它按照条件选择执行不同的代码片段,PHP的if语句格式为。如果条件为真,就按照顺序执行if语句体,跟c语言相同,一个语句组都是用的。
2023-06-05 19:12:17
646
原创 [第一章 web入门]SQL注入-1
拿到题目是一篇日记,是GET型请求方式,我们可以直接在url栏中注入数据。页面无回显,判断为字符型注入,闭合符应该就是单引号。判断注入类型,页面有回显所以不是整型注入。查询flag表中的字段名。无回显,说明有三个字段。爆出表名和数据库名称。
2023-05-28 16:44:34
1350
原创 [HCTF 2018]WarmUp1
拿到题目后是一个滑稽的图像,通过开发者工具查看源码获得提示访问指定页面后得到一串PHP代码,接下来尝试做代码审计首先定义了一个名为emmm的类并包含了一个checkfile函数首先看到的是一个$whitelist变量,翻译过来就是白名单,我们当前是source.php对应,还有hint.php,访问后获得提示继续进行代码审计,它的作用是检查变量 $page 是否已经被设置并且是一个字符串类型。
2023-05-28 13:01:10
1284
原创 [极客大挑战 2019]PHP1
既然提到了备份网站估计也是存在着网站备份文件,可以先用御剑扫一下啥都没扫出来,但是上回做文件备份的题目时收集了一些关于常用备份文件的文件名和后缀,可以直接使用burp抓包爆破,果然爆破出一个www.zip文件访问下载好文件就有三个php文件,下面进行代码审计。
2023-05-27 23:53:11
3060
7
原创 sql_labs18
判断闭合符,在User-Agent字段结束添加单引号,触发报错说明闭合符有用,但是下面的报错信息有点看不懂,User-Agent字段后面咋还跟了俩数据。看到了admin后面有个单括号,说明前面也是拥有一个左括号与之闭合,所以我们可以在注入语句后多添加一个右括号,绕过。之后经过查看知道了两个admin就可以登录上,并且可以查看到user_agent信息。多构造一个括号,这里不晓得为啥--+注释符不行,换成了#注释符,成功回显相关信息。还有就是既然发生了闭合,那么我们也可以在语句之后再构造一个单引号,绕过。
2023-05-20 16:37:13
125
原创 sqli_labs17 ——更新注入
为此我查看了别人的wp,有说是mysql的规则:在mysql中一个语句中不能先select表中的某些值,再update这个表。利用自己的字典查了一下也全部回显的一样的数据,那说明这个用户栏是设定了严格的过滤的,结合题目是修改指定用户的密码,所以可以尝试在密码栏注入。多了一层select语句,并且给语句查询到的数据做了设置别名处理,意思是将所有查询到的的username放在了以a暂时命名的users表中。输入用户名admin密码随便输入,发现回显提示是成功修改密码,更新就是指的更新密码。
2023-05-17 23:35:34
388
原创 sqli_labs16
刚使唤上还有点不习惯,为啥会报错也不知道,至少得到了想要的字段,username和password字典,接下来就要查看字段里的所有值。因为是POST方法传参,所以利用burp抓包后将数据包全复制下来,存放在sqlmap文件夹下的新建的文本文件里。单独列出来的原因是因为最近用了一个新工具——sqlmap,想尝试一下基础操作。加下来爆破当前数据库,users表中的所有字段名。在命令提示符输入以下命令,爆破出当前数据库。接下来爆破当前数据库的所有表名称。现在唯一的缺点就是慢。
2023-05-17 20:00:02
125
原创 正则表达式
正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。匹配输入字符串的开始位置,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。
2023-05-13 17:34:45
647
原创 PHP初识
PHP全称超文本预处理语言,是在服务器端执行的脚本语言,是一种简单的,面向对象的开源脚本语言PHP脚本可以让Web开发人员快速的书写动态生成的网页PHP脚本以结束php//这是php单行注释/*这是php多行注释*/?放在在PHPstudy的WWW目录下,访问本地加PHP脚本名称执行代码PHP 中的每个代码行都必须以分号结束。PHP 代码块的关闭标签会自带分号结束符的作用。
2023-04-26 20:28:21
485
原创 HTTP伪造
打开后是一个精美的页面,再精美也没啥用,先查看源码吧可以看到这里有个点击触发的a标签,点进去后提示我不来自,结合题目是HTTP,立刻就想到了HTTP请求头伪造抓包,本身是没有Referer字段的,这里可以自行添上,模拟发包后又出现回显提示,说请使用Syclover浏览器访问可以尝试更改User-Agent字段的信息,结果又说我只能在本地访问,这里就不会了经过查找扩展了有关信息,虽然之前也遇到过,但是选择性忘记了。
2023-04-17 17:29:27
654
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人