御林EASY
本文最后更新于 46 天前,其中的信息可能已经有所发展或是发生改变。

第2次写wp好激动

⚡神剑御雷真诀⚡

首先大致观察题目 分为上清境和太清境,这两块相对独立分别由get和post方法传参

上清境

由代码可知,我们最后的目的是让成员属性tupo等于tupo 在这个过程中我们不能直接赋值,所以只能考虑字符串逃逸 逃逸最重要的是replace,我们要找到replace前后长度不一样来逃逸 在六个境界中只有yinspirit和其他字数不一样 而想要逃逸,只能是ningshen替换成yinspirit 在check函数中,我们不能出现ningshen和yinspirit 所以我们只能靠,逐步替换来产生ningshen

我们发现,ningshen以n开头,yangshen以n结尾,chu_qiao不以n结尾 yangshen可以由chu_qiao替换得来,且该替换在ningshen之前

chu_qiao->yangshen
chu_qiaoingshen->yangsheningshen

替换前没有ningshen,绕过了检查 由于长度由8变9,每个替换,都会逃逸出一个字符

";s:4:"tupo";s:4:"TuPo";}

我们共需逃逸25个字符,构造如下

chu_qiaoingshen,chu_qiaoingshen,chu_qiaoingshen,chu_qiaoingshen,chu_qiaoingshen;chu_qiaoingshen,chu_qiaoingshen,chu_qiaoingshen,chu_qiaoingshen,chu_qiaoingshen;chu_qiaoingshen,chu_qiaoingshen,chu_qiaoingshen,chu_qiaoingshen,chu_qiaoingshen;chu_qiaoingshen,chu_qiaoingshen,chu_qiaoingshen,chu_qiaoingshen,chu_qiaoingshen;chu_qiaoingshen,chu_qiaoingshen,chu_qiaoingshen,chu_qiaoingshen,chu_qiaoingshen;";s:4:"tupo";s:4:"TuPo";}

逃逸成功

太清境

太清境的整体思路和上面一样,也是构造字符串逃逸 不过这次FanXu绕过不了,所以只能是由DongXu到FanXu 所以这次是减少逃逸,先构造advance的内容

;s:7:"advance";O:7:"Dong_Xu":1:{s:7:"advance";O:6:"Fan_Xu":1:{s:7:"advance";O:9:"Kong_Ming":1:{s:7:"dacheng";s:7:"DaCheng";}}}}

此时advance共127个字符

XXX";s:7:"advance";s:127:"XXX";

要想逃逸需减少22个字符 因此,在xiulian里写22个DongXu

DongXu,DongXu,DongXu,DongXu,DongXu,DongXu,DongXu,DongXu,DongXu,DongXu,DongXu;DongXu,DongXu,DongXu,DongXu,DongXu,DongXu,DongXu,DongXu,DongXu,DongXu,DongXu;

假·调查问卷

根据提示,这是一个xxe漏洞

先随便提交一点什么,然后抓包,发现果然是xml传输

我们在这里引用本地的外部实体

<?xml version="1.0" encoding="UTF-16BE"?>
<!DOCTYPE root [
<!ENTITY aaa SYSTEM "file:///app/fl4g2533333333.txt">
]>
<root>
<feedback>
&aaa;
   </feedback>
</root>

不过由于过滤了system,所以用utf-16be来绕过

ez_Pickle

先注册然后登陆,登陆的时候抓包,发现如果登陆成功,返回一个cookie并重定向到/home cookie用base64解码后是pickle序列化后的opcode 所以我们只要把序列化后的内容塞进cookie然后向/home提交get就可以了 第一题可以用reduce生成 一二题可以用反弹shell,但第三题断网了 在第二三题R被禁了,可以用o或者i 手搓字节码,用getattr和popen把回显赋值给user.username

Yulin浏览器

找到后台了!

首先发现这个页面可以执行url请求,但是经过实验只能用http协议 这样的话就不能用伪协议来访问文件了

根据提示,我们要找到该服务器在内网上的其他服务 一般来说,一个服务对应一个端口 所以我们要访问它的其他端口

但是域名只能绑定一个端口,所以我们要利用它自己来访问自己 让它访问127.0.0.1

但是被过滤了 考虑转成10进制绕过2130706433

成功了,它的内容重复了两遍

接下来用burpsuite抓包,然后遍历每一个端口 最后在5237端口找到了登陆后台的服务

Fast…CGI?

尝试乱输用户密码,没有用 抓包后发现,图片的src里不是地址,而是一个名字奇怪的php

尝试后,它也有访问url的功能,而且它的过滤要宽松一些 虽然还是不能用file等伪协议,但是可以用gopher 在结合题目fastcgi,我们可以伪造fastcgi协议利用gopher转到9000端口 在内容里加上auto_prepend_file和php://input 这样我们就可以让index.php包含我们想要执行的代码了

首先用fastcgi脚本生成请求发送到本地12345端口 本地12345监听之后保存到1.txt 最后将内容两次url编码后接到gopher://127.0.0.1:9000/_后面 (gopher不会转发第一位,所以用_填充)

杂鱼杂鱼~

狠狠溢出,指缓冲区溢出,提前把flag地址发出来 burp和浏览器也有缓冲区(python的request也有)我用的是pwntool 抓个包把headers粘过来然后手动发送和接收 溢出的不够多,指我的username写了10000字节(1000字节小了) 对于md5,有数组绕过和0e绕过 但在这里,数组绕过会导致你变成Array酱~ 0e的话是有可能的,任何长度的字符串的md5值可以认为是随机的 所以平均每340282367个字符串就有一个字符串满足弱类型比较,但需要你的电脑比较好(你的代码的复杂度也比较好)

我选择的是md5长度扩展攻击,首先去网上查两个md5值相同的短字符串(这个比较容易,实在查不到还有其他方法)然后把他填充到64的倍数字节,第一个填0x80,后面填0x00,最后八字节填短字符串的长度(16进制,低位在前)然后再这之后添加任意相同内容如aaa…长度任意,可以保证md5值始终相等。

当然你也可以下载md5碰撞生成程序,可以根据任意前缀生成md5值相同但内容不同的两个文件(最后128字节不同,前面相同)

这两个都是利用md5的生成逻辑,每512位(64字节)一组,根据前一个的md5值生成后一个的md5值,具体搜索网页(

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇