0%

HackTheBox Tracks "OWASP Top 10" WalkThrough

为了我的14刀订阅费/(ㄒoㄒ)/~~

looking glass

一开始吧,并无头绪。但它的实例网页名是“rce”,RCE好眼熟捏。我好像知道他是个漏洞。

ACE arbitrary code execution
The ability to trigger arbitrary code execution over a network (especially via a wide-area network such as the Internet) is often referred to as remote code execution (RCE).

RCE(Remote Code/Command Execute)为远程代码/命令执行的漏洞
漏洞产生的原因:在Web应用中开发者为了灵活性,简洁性等会让应用去调用代码或者系统命令执行函数去处理。同时没有考虑用户是否可以控制这些函数的参数问题(若不能控制这些参数,自然也没有这个漏洞;若能控制这些参数,也可能出现考虑了但没有完全防住或者压根没考虑 😕),以至于这个漏洞的产生。
https://blog.csdn.net/weixin_46962006/article/details/121828362

然后去看了csdn上的题解,发现很简单

  • 它的界面如下

    其中最后一项是可以输入的。
  • ping 127.0.0.1 && ls /

    结果就出来了,找flag即可
  • 值得一提的是在它默认所给的地址添加语句是不可以的。似乎是ping/Traceroute成功才会返回全部语句。

    为了我这种弱鸡,他们真的,我哭死

sanitize

上来看见SQLi我就一乐,专业对口。
SQL injection可谓我的“木碗”里最长的一边了。
起码我知道是怎么回事
先用” 1 ‘ “试了试,返回报错了。不愧是easy啊,真照顾我。

by the way , PicGo + Githu 做图床真好用

同时可以看出是sqlite3,而且疑似不能太长。
emmmmm
直接”admin’ –”即可,有点浪费了我一腔热血的意思┭┮﹏┭┮

baby auth

给出的网页名提示是broken authentication
随便创建一个用户,登录后显示”you are not admin”
我想试试能不能在创建用户时sqli时,它依旧显示”you are not admin”

直接在登录页面试会返回错误页面”invaild user”,所以我想可能不行吧

我关掉页面重新打开后直接显示”you are not admin”,因此我怀疑是不是跟cookie之类的认证有关系。
看request head 发现cookie很短,就这一项,”PhpSessID”,好有暗示的名字。
观察他这个payload发现就是单纯地发过去。
题解
确实是cookie的问题,cookie也确实是base64编码。
可惜,我憨憨的用我创建的密码账号去encode出来,看看是否一致。而没想到可以去decode它的value。:D

“我真傻,真的。。。。”

总而言之,
图片来自题解,他注册的username为yes

baby nginxatsu

我看过题解了,但是没关系因为我忘了
登录自己所创建的帐号后界面如下

Generate Config之后就有一个config了。点击可以查看。

# We sure hope so that we don’t spill any secrets
# within the open directory on /storage

访问159.65.49.148:31338/storage/,发现好多conf和一个tar.gz
下载下来tar.gz

顺便一提,他这个是个tar包,而非gz包

解压后打开看到database.sqlite。题解使用了Sqlitebrowser,它还正好在arch源里。
然后在users表里看到用户名,email和密码。题解说是”hashed passwords”。散列函数题解使用了hashid,我装了hash-identifier。

Possible Hashs:
[+] MD5
[+] Domain Cached Credentials - MD4(MD4(($pass)).(strtolower($username)))

emmmm,好像就得hash碰撞了。题解使用了hashcat。我装了但没有用,使用的一个在线的网站,有空研究研究hashcat。
利用邮箱和碰撞出来的密码进入即可看到flag。

baby WAFfles order

Waffles 华夫饼
“check out our super secure ordering system API!”

我一开始觉得是类似OWASP juice shop里那种没删干净的api那样。我还憨憨地拿dirsearch 扫,然后看了题解。发现还真就是类似,可惜我当时做OWASP Juice Shop写的文档不是很详细,这个题就没写。

我在去youtube看了wirte up之后终于发现在Start Instance和Submit Flag之间有个Download Files。

再顺便一提,下载下来解压后直接就能看见flag。可惜,很遗憾并不是正确的flag。

我并不懂php,但是还是能根据题解看出来个大概(?
在 controllers/OrderController.php 中,看出可以有两种方式,类似OWASP Juice Shop 发送商业订单的那个题。

通过burpsuite改变header中的Content-Type

它这个题不仅要改变Content-Type , 还要构造相应的xml格式的content

网页名的”xxe”也给出了提示:
XML external entity (XXE) injection
顺便明白了Server-side request forgery (SSRF)

一样,不完全一样,这道题就是xxe+ssrf,恁道只是ssrf(?
另一个题解

我都一步步按着来了还是没有,都怀疑人生了。然后试了试Action->Send Repeater,然后在Repeater里看到了。它的“前端”(我不知道是不是该这么叫因为我啥都不懂)没法处理这种意料之外的Response,所以要直接看Response而非在浏览器界面憨等 :D

修改Content,Content-Type即可。
没有拿到flag,不明白。可以返回/etc/passwd,但不能返回flag。一步步做了都。

来自第二日晚的更新,成了佳人!成了!网太慢了,设置过Burpsuite的代理后成功拿到flag。

太兴奋了,忘了复制flag就关了,!

baby todo or not todo

就一页面,输入框中输入然后回车即可添加一项,之后可以玩成或是删除。结合它的描述和网页名”broken authentication control” 来看,我想他是不是想让我对cookie中的session动点什么手脚。
看了那么久源码,结果没有注意到页面html中的

1
2
3
4
5
6
<script>
// don't use getstatus('all') until we get the verify_integrity() patched
const update = () => getTasks('user4973A43e')
update()
setInterval(update, 3000)
</script>

题解,我头一次知道chrome中的concle是那么用的。可以在concle中使用函数。感觉自己要学的很多,但又不知道学啥。

baby BoneChewerCon

“the website is under maintenance and it errors out, but the debugger is still enabled in production!!”

随便输入什么之后来到debugger(?,然后Ctrl+F搜索htb,找到flag,完了。???

这就是我能独立完成的程度🐎

Full Stack Conf

“But be very careful with the stay up to date form, we don’t sanitize anything and the admin logs in and checks the emails regularly, don’t try anything funny!! 😅”

网页名xss,对口partly。页面下边写了”Stay up-to-date on Full Stack Conf or pop an alert() to get the flag 😅”

很简单的一个题,就最简单的reflected xss,不知道是我网太慢了还是什么原因,半天不显示,最后下去拿了个外卖回来才显示。

baby website rick

Insecure deserialization反序列化,有意思。我很久之前在看一个老哥的面经时看到了这个词。可惜一直没有想去弄明白。

“Deserialization is the reverse of that process, taking data structured from some format, and rebuilding it into an object. Today, the most popular data format for serializing data is JSON. Before that, it was XML.”
Deserialization

我在看了portswigger的关于利用反序列化的内容后,我认为应该是想让我修改cookie的内容。
题解

  • 原来python有个库叫pickle
  • 需要利用pickle库去解码
  • Sever端是通过运行python来输出的。
  • 我的python水平也不咋地。

2022年11月8日
我昨天躺在床上,开始想这个hackthebox,我一开始想它这个是不是对我来说没有用,但是我想了想,有一种模模糊糊的想法,即便是现在也不能表述得清晰:我应当结合它的各个实例,去发现找到现实中的漏洞;去提高对各种漏洞的敏感,知道利用的方式、特征。而我之前所利用hackthebox来学的是工具的使用,我的目的是为了挖洞,工具是其次的,无所谓的。我想我把挖洞和使用工具弄混了。

baby breaking grad

graph TD
    A[指出错误] --> B[没法毕业] --> C[动点手脚]

┑( ̄Д  ̄)┍

先做出来,再写walkthrough。

题解

2022年11月12日,为什么这个flag提交不过??
2022年11月14日,费了点劲儿找到flag,emmmmm
这是我的burpsuite返回的:
这是我发现的题解的flag:
于是我又回去看youtube视频的flag:
三者中的第二个flag是正确的。我想这可能是burpsuite字符编码的问题?

  • 我的javascripts水平更不高。
  • python,emmm,实践不怎么行。