自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 ctfshow123-150

',这相当于执行了 eval('$fl0g=flag_give_me;因为我们的目的就是运行命令代码,可以不用考虑返回值,这里运行phpinfo后直接回显到页面上了,返回值是NULL,后面的||1和前面的1==也只是为了凑出一个判断的代码,让phpinfo执行,所以这两个值也是无所谓的,只要最终保证phpinfo执行就可以了。最后 判断 if($fl0g === "flag_give_me"),因为 $fl0g 被正确地设置为了 'flag_give_me',所以这个条件为真,因此,echo $flag;

2025-02-13 15:27:13 810

原创 ctfshow web 96-115

在第三个if语句中,我们想要得到flag,就需要让这个if语句执行的同时让error的值等于flag,因为要绕过第二个if语句,所以我们在post方式中是没有传入名为flag的值的,我们也不知道原本的flag的值是多少,所以 $_POST['flag'] 为空,为NULL这个等式不成立,可以执行,但其实下面也有一个输入flag的代码,但是如果我们想要绕过第三个if语句,就必须要在post传入flag名字的参数,这样就会覆盖我们原本想要的到的flag,而且也不会满足第二个if语句,所以我们用了这种该方式。

2025-01-15 17:42:26 818

原创 CTFshow web89-95

这道题和90的区别在于第一个==不是看字符是否相同,而是看他们的数值是否相同,所以上面用的 4476,4476*1,+4476,4476+1-1,这样的字符改变和简单的加减乘除无法绕过。现在这道题不能输入我们上面使用过的所有答案,但是小数依然可以输入,只需要我们的的数字中存在0即可,4476.0或4476.01等都满足所有条件,输入flag。$num==="4476"是在对两个字符串进行比较,而 intval($num,0)===4476 是对两个整形进行比较,所以我们只需要让num的计算。

2025-01-11 19:59:39 1572

原创 PolarCTF冬季赛 - 赌王

发现文件名,查看ed3d2c21991e3bef5e069713af9fa6ca.php。打开源码发现了提示需要修改地址为1.1.1.1,用XFF伪装一下,就可以正常命令执行了。比较数字,这里尝试过没有溢出,发现可以数组绕过。成功,对ip传参进行命令执行即可。空字符爆破,持续发包1000次。提示发现要求地址为四个1。注意这里对空格的绕过。

2024-12-09 16:22:08 269

原创 ctfshow-web118~122

代替,这里上面有说过,但实际上我们发现cat不能像上面一样的姿势去匹配a了,看了别人的wp,发现有一个命令执行是rev效果和tac差不多,我们只要拿到t就可以了,通过构造${PWD:${IFS}:${##}}就可以得到。相比于上面这里的${PWD::${#SHLVL}}的两个分号之间是没有值的,这里默认是从头开始,所以我们不需要填入值就可以达到跟上面一样的效果,后面也是使用的是{USER:~A},并且再flag.php里面也没有多构造函数,直接正则匹配了?具体到不同的环境和语境中,它的含义可能会有所不同。

2024-12-09 16:14:06 838

原创 ctf show web87

对content传参,需要注意的是,前面的<?php die()?>中,我们是假设可以对其解码会成为phpdie,但是这里是6个字节被解码,但是base64解码是以4个字节为一组,所以我们还需要多给他两个字节,就是两个字符,因为传入内容是和后面的传入参数的值拼接而成的,所以我们可以在后面参数中的前两个字符随便写两个垃圾字符来帮助它能成功解码,避免解码出现问题,下面是演示对刚刚说的字符进行解码。来解码写入,这样文件的 die() 就会被 base64 过滤,这样 die() 函数就绕过了。

2024-12-03 18:25:36 547

原创 ctfshow-web80

如果被包含的文件中有函数、类、变量,它们会被定义在当前脚本的作用域中,供后续使用。

2024-11-25 18:37:13 628

原创 ctfshow web-75

由于本题过滤了strlen,没办法使用web72的uaf的方式绕过命令执行的限制连接数据库查询,通过构造一个可以连接数据库的php脚本,来查询数据库内的数据try {// 使用PDO(PHP Data Objects)创建一个新的数据库连接对象,指定DSN、用户名(root)和密码(root)​// 执行一个SQL查询,从指定的文件(/flag36.txt)中读取内容// 输出读取到的内容,并追加一个竖线(|)// 将数据库连接对象设置为null,关闭连接​。

2024-11-19 13:26:27 818

原创 ctfshow web-72

测试发现只能访问当前目录。

2024-11-19 13:21:52 772

原创 ctf show-web66-70

66-70这几题的做法都一样,就是每个题的过滤不一样,这里自己整理了一下多种得到flag的方式,防止过滤先查看根目录里面有什么。

2024-11-19 13:16:50 283

原创 ctf show-web57

整个表达式最终的结果是-2,因为内部的每个嵌套都经过按位取反,最终导致运算结果为-2。

2024-11-19 13:12:05 818

原创 CTFshow web41

scandir() :将返回当前目录中的所有文件和目录的列表。返回的结果是一个数组,其中包含当前目录下的所有文件和目录名称(glob()可替换) localeconv() :返回一包含本地数字及货币格式信息的数组。(但是这里数组第一项就是‘.’,这个.的用处很大) current() :返回数组中的单元,默认取第一个值。pos()和current()是同一个东西 getcwd() :取得当前工作目录 dirname():函数返回路径中的目录部分 array_flip() :交换数组中的键和值,成功时返回交换

2024-11-06 17:42:00 643

原创 ctfshowweb55

这里我们发现过滤了分号说明我们不可以用自增,不能用转接头的方式写这道,过滤了字母,不能直接输入命令,不能用反引号说明不能用反引号构造命令,不能用无参的函数,不能用%说明不能用取反,不能用异或,不能用%09说明不能用这种方式过滤空格,不能用%26说明不能用&的编码,不能用<>也是不能用这种方式过滤空格,也不能用文件包含来写,其实过滤字母就过滤了许多方法,这里我可能写的比较乱,总的看来就是很多方法在这里就不能用了,除去上面那种方法,查看大佬们的文章后发现还有一种方法就是用post上传一个文件,再通过。

2024-11-06 17:31:05 1249

原创 pop链例题

因为这个调用函数的代码是在w33m中进行的,所以我们要如何调用这个w33m类呢,并且这个代码也是在toString()这个函数里面的,这个魔术方法的意思是当对象被当作字符串时被调用,例如echo。查看代码,发现在SHCTF中可以通过($this->isyou)($this->flag)构造一个语句得到flag,查看代码发现w44m类里面的Getflag函数可以用来读取flag,因此就将它作为这条链子的尾部。w44m类中的变量含有私有属性,有私有属性的一定要url编码一下,会有不可见的字符。

2024-10-23 13:33:08 417

原创 反序列化字符串逃逸(增加)个人觉得挺详细的

,这样就可以使crime变成1,一共19个,我们就需要逃逸19个字符,就输入19个joker再加上我们想要的。这个时候就会读取12个字符,后面还有个11,所以在反序列化的过程中系统读取完两个batman后会接下来是不是就应该都11了,如果没有按照格式来,是不是就会报错,如果我们可以把这里的11改成我们想输入的字符串字符是就可以控制反序列化取的读取让读取的过程中模仿合法的情况让它正常读取并闭合,类似于sql中的万能密码,通过控制参数的传入,来让系统读取我们想让他读取的内容。

2024-10-23 13:27:09 339

原创 我的flag碎成三片

到第二部分查找flag多个部分的时候其实更多是考验经验,通过我们平时做题的多种方式才查找我们想要的flag。

2024-09-25 13:12:45 1043

原创 【无标题】

进入官网,点击下图蓝色圈内点击Download下载社区版,选择自己电脑适合的版本根据自身情况设置安装路径按照以上步骤下载即可。

2024-09-03 18:00:48 233

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除