
各种ctf的wp合集
文章平均质量分 88
Usagi!
人一能之己百之,人十能之己千之
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
BUUCTF刷题记录
首先,它从GET请求中获取名为"host"的参数,并将其赋值给变量$host。接下来,代码使用函数对$host进行转义,以防止命令注入攻击。这个函数会在字符串的开头和结尾添加单引号,会将其中的单引号字符'加一个转义符,再加上一对单引号进行链接单,转义为'\''。然后,代码使用函数对host进行更严格的过滤。这个函数会删除字符串中的一些特殊字符,包括`\0`、`\n`、`\r`、`\t`、`\`、`;`、`|`、`&`和``,防止恶意用户利用这些特殊字符执行任意的Shell命令。原创 2024-01-11 14:38:57 · 1170 阅读 · 0 评论 -
[De1ctf 2019]SSRF Me(哈希拓展攻击)
在secret_key + param + action里,已知secert_key = os.urandom(16)(长度16),已知明文flag.txt(param)和scan(action),我们需要添加read。把flag.txt算进秘钥长度里,则秘钥长度为16+8,已知明文为scan,已知hash为8370a8f86a7a74b4053d1bc554a9d126,拓展明文为read,启动刚刚的脚本依次填入得到新明文和新hash,原创 2024-01-08 18:58:39 · 2045 阅读 · 1 评论 -
[ASIS 2019]Unicorn shop
由于 Unicode 是一种字符集,它可以表示世界上几乎所有的书写系统中的字符,因此 Unicode 编码中的 50000 可以被解释为一个字符,并且该字符并不受到 ASCII 编码字符的限制。传入UTF-8编码,在后端处理的过程中,发现该UTF-8编码无法解析为ASCII码,然后会将其解析为Unicode编码,而Unicode中的这个字符表示的值为罗马数字5000,且为一个字符,于是就绕过了一个字符的限制,数字大小也大于1337,于是成功购买,得到flag。通过这个网站寻找大于1337的字符。原创 2024-01-03 22:29:06 · 479 阅读 · 0 评论 -
2023楚慧杯 WEB方向 部分:(
查看源码能看见账号:username169,密码:password196提交这个用户密码可以跳转到页面/dhwiaoubfeuobgeobg.php通过dirsearch目录爆破可以得到www.zip这里可以命令执行,使a=nl,b=/f*绕过正则得到O:4:"Flag":2:{s:1:"a";s:2:"nl";s:1:"b";s:3:"/f*";s:1:"b";s:3:"/f*";原创 2023-12-18 22:38:30 · 751 阅读 · 0 评论 -
bugkuctf web随记wp
上传一句话木马,抓包,改Content-Type:为image/jpeg,把filename="1.php"改成filename="1.php4"(php2,php3,php4,php5,php6,php7,phps,phpt,phtml,phtm,Php,php:.jpg)两种绕过方式:1.利用该函数的空截断漏洞,开头就是\x00,后面不管是什么都会匹配成功,后端得到的是\x00,这中间还有个解码过程,因此要对\x00进行url编码为%00,如果用这种方法b要在最后,不然过早把\x00放入会把a也截断。原创 2023-12-14 23:26:25 · 1144 阅读 · 1 评论 -
ISCTF2023 web方向wp超详细解析+做题思路(部分)
题目:提示了一句话密码为1,直接蚁剑连靶场,密码连1进去就能看见flag1根目录有flag2flag3不可能一个个点,肯定是转去虚拟终端用命令找,在开虚拟终端之前看下.sh,一般都会放些提示我们就能知道,FLAG3 包含了 FLAG 变量的从第 21 个字符到末尾的部分,可以直接在虚拟终端输出 FLAG3 变量的值那我们先进入虚拟终端,然后cd /去到根目录,然后在根目录输出FLAG3 变量的值别的命令不知道为什么不是返回不了,就是权限不够,都已经root了(?原创 2023-11-29 16:14:28 · 5586 阅读 · 0 评论 -
PHP反序列化刷题合集
第一步:确定切入点在于($this->func)($this->var);,给func传system,给var传ls /,如果执行的话就是system(‘ls /’)查根目录,那我们怎么执行呢?需要我们触发evil方法第二步:我们注意到pwn类中的$this->obj->evil();可以触发evil()方法,那我们就可以把实例化的web类传给pen类的obj属性,想要真正触发evil()还需要触发__invoke()魔术方法。__invoke会在一个对象被当做函数调用时触发。原创 2023-11-20 23:58:58 · 756 阅读 · 0 评论 -
山东省“技能兴鲁”职业技能大赛 学生组 WEB方向全wp
打开就能看见源码抓包能看见回显里有Server: nginx/1.22.1在 Linux 系统上,Nginx 的默认访问日志和错误日志路径可以在 Nginx 的配置文件中进行设置。一般来说,默认情况下,Nginx 的访问日志和错误日志的位置如下:访问日志:默认情况下,Nginx 的访问日志路径是。这个路径可以在 Nginx 的配置文件中通过access_log指令进行设置。错误日志:默认情况下,Nginx 的错误日志路径是。这个路径可以在 Nginx 的配置文件中通过error_log指令进行设置。原创 2023-11-14 16:54:18 · 506 阅读 · 0 评论 -
强网杯 2019 Upload(代码审计、反序列化、thinkphp5,附代码审计详解)
首先看到登录和注册页面,爆破了一下admin登录界面无事发生,注册后登录看见一个上传头像的上传点(不知道是不是容器原因,上传完第一次后上传不了第二次一直显示连接不上),扫了下目录扫出一些文件,其中有用的是www.tar.gz打开压缩包能看见是th5,查看查看看到其定义的路由都指向了这个模块,该模块下共有四个控制器(四个文件的审计在最后)关键的点在于:Index.php中的login_check()中,有一处使用了反序列化,并且没有进行任何过滤寻找别的魔术方法Register.php中:Profile.php原创 2023-11-12 23:00:01 · 494 阅读 · 0 评论 -
Newstar week5 WEB Unserialize Again(phar反序列化,__wakeup()绕过,phar重签名)
newf = s + sha1(s).digest() + h # 对要签名的数据进行SHA-1哈希计算,并将原始数据、签名和类型/标识拼接成新的数据newf。//写文件,文件名是$pear,内容是$file。f = file.read() #打开名为1.phar的文件,以二进制只读模式读取文件内容,并将其存储到变量f中。在文件系统函数(file_exists()、is_dir()等)参数可控的情况下,配合phar://伪协议,可以。因为重新赋值修改了文件的内容,之前的签名就会无效,所以需要。原创 2023-11-10 23:37:54 · 625 阅读 · 1 评论 -
SSTI模板注入CTF刷题合集
过滤下划线,单双引号,还有很迷的一个过滤,单纯的{{会过滤,但是如果GET方法有{{,request.cookies.c,同时加上cookie,这个{{就不会被过滤。原创 2023-11-08 23:29:57 · 976 阅读 · 0 评论 -
[安洵杯 2020]Normal SSTI详细解法(Unicode编码绕过)
引用popen,查目录url={%print(lipsum|attr(%22\u005f\u005f\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u005f\u005f%22)|attr(%22\u0067\u0065\u0074%22)(%22os%22)|attr(%22\u0070\u006f\u0070\u0065\u006e%22)(%22\u006c\u0073\u0020\u002f%22)|等效于{{””.__class__}}原创 2023-11-07 19:12:38 · 1308 阅读 · 1 评论 -
Newstar web week3 OtenkiGirl详解(JS原型链污染)
举个例子A有苹果雪梨,B有苹果,C有西瓜,ABC是一个原型链,这个原型链的继承机制相当于你找C要苹果雪梨,C没有去看B,B有苹果没有雪梨,在往上找A,A有雪梨,所以虽然C没有苹果雪梨,但是找C要C还是能从AB那里扣出来苹果雪梨给你,如果ABC都没有才是真没有。当我们访问一个对象的属性或方法时,如果该对象本身没有定义该属性或方法,JavaScript引擎会自动在原型对象中查找。,将恶意代码注入到原型中,当其他对象通过原型链继承了被污染的原型对象时,它们也会受到影响,从而导致意外的行为或数据泄露。原创 2023-11-05 00:56:30 · 315 阅读 · 1 评论 -
2023Newstarctf week4 More Fast详解
s:3:"var";可以触发evil()方法,那我们就可以把实例化的web类传给pen类的obj属性,想要真正触发evil()还需要触发__invoke()魔术方法。因为当反序列化的时候第一层接受到的是一个包含两个元素的数组,该数组第一个元素是一个对象,其类名为 Start,第二个元素是一个整数(0),把第二个i后面的值改为0后,使得数组对象为空。,如果我们把实例化的pwn类传给这里的func属性,且触发__get魔术方法,那就会导致一个对象被当作函数调用,从而触发pwn里的__invoke魔术方法。原创 2023-10-30 23:45:06 · 429 阅读 · 1 评论 -
2023NewStarCTF [WEB] week4 逃 字符串逃逸
第一种:还是同样的思路把最后的cmd排挤出去,用我们自己构建的cmd属性,但是这里问题就来了,我当时鼠标点错修改的是最后一个cmd,但是居然也出了flag,理论上这里已经被截断了呀。而且我定睛一看发现我刚刚的ls /也是这么来的,理论上key的长度不对应该什么都出不了。我们的思路就是把多出来的字符构造成功能性代码(即自己构造一个cmd属性),原本的功能性代码就不管了(不管给原本的cmd赋值什么都不重要了,因为我们已经自己动手构造cmd属性了,而原本的cmd会被废弃)的时候就会默认结束,意味着什么呢?原创 2023-10-29 18:52:05 · 422 阅读 · 0 评论 -
BuuCTF nextGen 1 WEB
方法设置请求头的"Content-Type"为"application/x-www-form-urlencoded",表示请求体的格式为URL编码形式。提示中给了flag.txt,但是直接访问显示Page not found,有可能是因为权限限制我们不能直接访问。简而言之,我们可尝试构造POST请求,通过file://来获取本地文件信息。请求体中包含了一个名为"service"的参数,其值为。指定了请求的URL为"/request"。方法设置请求的类型为POST,并。的函数,它接受一个事件对象。原创 2023-10-28 18:17:41 · 747 阅读 · 1 评论 -
BuuCTF [GXYCTF2019]禁止套娃详解(两种方法)
点入题目没有提示,常规抓包看源码扫目录,用dirsearch扫目录的时候扫出git第一眼看见第二个if语句,if(';R)?\)/', NULL, $_GET['exp']))可以看出这是典型的无参数rce,然后是后面的if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp']),这里限制了phpinfo(),getcwd()这些函数用不了。原创 2023-10-28 15:57:23 · 982 阅读 · 1 评论 -
由bugku baby lfi 2一题引入LFI漏洞(本地文件包含)
"./" 的作用是将文件路径 "./languages/../../../../../../etc/passwd" 解释为相对于当前工作目录的路径。我们的目标是要包含到/etc/passwd,那显而易见需要我们跳到根目录再进行包含,这里试了../../../../../etc/passwd提示不合法,那我们先访问当前目录下的languages再尝试跳回根目录,再去访问我们的目标。根据选择语言的提示,我们的参数名可能是language,尝试了file,language作为参数名后确定传参给language。原创 2023-10-25 00:49:03 · 1368 阅读 · 3 评论 -
NewstarCTF2023 WEB [WEEK3] 题目及思路
提示了LFI to RCE,搜相关资料可知然后使用蚁剑链接。原创 2023-10-23 14:39:34 · 2635 阅读 · 0 评论 -
2023XSCTFcanyoupassit(md5弱比较,科学计数法绕过,str_starts_with()函数)
开头,并且后面的部分可以被解释为一个整数时,它的值将被解释为科学计数法表示的数值。:发送 HTTP POST 请求到指定的 URL,并返回服务器响应的内容。获取当前时间的 Unix 时间戳,并将其转换为字符串,存储在变量。获取服务器响应的状态码和内容,并将它们分别打印到控制台输出。:获取服务器响应的文本内容,通常是一个字符串类型的对象。:获取服务器响应的状态码,通常是一个 3 位数的数字。:将数字或其他类型的对象 x 转换为字符串类型。:将字符串或数字 x 转换为整数类型。的末尾,分别构成新的字符串。原创 2023-10-16 00:44:32 · 556 阅读 · 0 评论 -
2023NewStarCtf [WEEK2] web 方向超详细wp(题目+思路+拓展知识点)
这里需要修改前端js文件,用变量覆盖修改gamescore的值,使得判定为大于100000分。步骤:火狐找到调试器下的js文件,在里面gamescore这一行打断点(点一下347那行的开头就行),然后点击开始游戏,游戏会在打中目标的时候停在断点处,这时候点击控制台,在里面写入gameScore=99999999999然后回车,就相当于给这里的gamescore赋值了99999999999,然后点击左上角这个运行,回到调试器把鼠标移到gamescore上面看看有没有赋值成功,然后点击运行,就能弹出flag。原创 2023-10-15 09:49:11 · 1956 阅读 · 0 评论 -
2023NewStarCtf WEB [WEEK1] 超详细题目思路wp
扫描目录得到www.zip,下载到电脑后打开里面有index.php和robots.txt,点开得到两段flag,拼接得到完整flag。原创 2023-10-10 18:38:01 · 698 阅读 · 0 评论