[Root-me]PHP – Eval-hard

[Root-me]PHP – Eval-hard

What’s up anh êm… Một buổi sáng mệt mõi cùng cái payload này… Bài này công nhận hay có thể áp  dụng thực tế nhiều, có lẽ sẽ pass được khá nhiều bài CTF nếu bạn hiểu nó, không nói nhiều nữa. Zô đề đề đề !!!

Giao diện và source được cho sẵn

12

Mục đích bài này là cần bypass preg_match, thực thi malicious code thông qua hàm eval. Như bạn thường thấy các hàm thực thi như system,shell_exec,… đều chứa các kí tự thuộc alphabet. Nhưng với trường hợp filter input với các kí tự từ a đến z, từ a bự đến z bự. Thì phãi làm sao, tuii cũng không biết phãi làm sao :v Sau khi hỏi gợi ý từ đàn anh, tuôi nhận được một link hd không che và vài lời gửi gắm ngắn gọn nhưng mở ra một cánh cửa mới

3.PNG

https://securityonline.info/bypass-waf-php-webshell-without-numbers-letters

Link đây các bạn, Một điều rất là quan trọng là các bạn cần đọc hiểu thật kĩ DOC ở trên rồi kéo chuột xuống đọc tiếp, chứ không méo hiểu chúng ta sắp làm cm gì đâu… Thề với tổ quốc

Và nhớ đọc thêm cái này..

http://php.net/manual/en/language.operators.increment.php

 

CHAPTER 2:

Dành cho những bạn đã đọc DOC, và hiểu nó như hiểu người yêu cũ của bạn, nếu vẫn chưa hiểu xin hãy quay về lúc mới yêu người yêu cũ … >.<

Với bài này mình, mình sẽ dùng cách 2, cách một thức nhất mình chả ưa cái xor gì đấy, thực chất vì mình noob nó, cái thứ 2 trong payload khi encode có kí tự alphabet nen bị reject.

Đặc biệt trong bài này mình muốn các bạn thực sự hiểu và thực sự build payload, bài này dùng khá nhiều cho mai sau nên xin hãy tự làm nó

Mình xin nói hướng làm của mình là in inject malicious code như sau :

SYSTEM(STRTOLOWER(LS -LA)) ** Mình sợ rằng .passwd chứa trong folder khác nên cứ show ra xem thử !!!

SYSTEM(STRTOLOWER(CAT .PASSWD))

Mình phãi dùng func STRTOLOWER vì theo cách payload thực thi thì nó chỉ trả về giá trị in hoa mà command LS thì đâu được đâu, nên cần chuyển vì kí tự thường LS -> ls đó các bạn.

Đây là code chung chung của mình, các bạn chỉ nên tham khảo và tự code lại .

https://github.com/h3ll38/WEB-Training/blob/master/EVAL-RM/payload.txt

Và một lưu ý rằng, khi inject code các bạn nhớ encode nó thì mới exec được =.=

Với đoạn code SYSTEM(STRTOLOWER(LS -LA)) ta được:

4.PNG

Tiếp theo mình chỉ việc cat file .passwd thuôi SYSTEM(STRTOLOWER(CAT .PASSWD))

5.PNG

Bài này khá ít DOC, có lẽ k dễ nhưng mình k muốn giải thích nhiều vì sợ mất các bạn quên đi mục đích là cần phãi tìm tòi….

FLAG : {TRY_HARD_DON’T_COPY_PASTE}

Bài này mình viết ngẫu hứng nên chữ nghĩa chim cò, câu cú trên k ổn. Các bạn đừng ném đá nhe, nếu đọc không hiểu, thì các bạn có thể comment mình sẽ giải đáp tận tình. Xin cảm ơn… ❤

4

4 thoughts on “[Root-me]PHP – Eval-hard

    1. Hello chincha, urlencode chỉ mã hóa các kí tự từ client đến server thôi bạn. Trước khi vào các chức năng xử lí code back-end. Nó sẽ tự động urldecode url được gửi lên. Và convert đúng dạng payload mình gửi lên server!
      Lưu ý chút ha, urlencode là phương thức phổ biến trong việc giao tiếp giữa client và server. Vì trong url có các tự như: $, +, /, :, ; @… là những kí tự đặc biệt. Ảnh hưởng đến việc parse URL nên cần phải encode.

      Like

Leave a comment