記性不好,老忘事于是決定把做的題目記錄一下
這是一個代碼審計的題目

需要傳入有個args引數,通過eval來執行var_dump來列印一些東西,但是它列印的是$$args而不是$args,
對‘$$args'的分析:
example:
1 <?php 2 $plan = 'Binary'; //變數plan的值為'Binary'的字串 3 $Binary = 'handsome'; //再把變數plan的值設為一個變數的變數名,而這個變數的值為'handsome' 4 echo $$plan.'</br>'; //列印$$plan,其實就相當于列印$[$plan]=$[Binary]='handsome' 5 echo $Binary.'</br>'; //列印$Binary,其結果為'handsome'和上一行的列印結果一樣
有了這個例子,就可以操作了,傳入的是args引數,而傳入的引數將會被當作一個變數名并列印它的變數值,比如傳入一個x,則有$args=x,而執行var_dump($$args)時相當于執行var_dump($x),而此時程式里沒有x這個變數,所以就會回傳一個NULL值顯示在瀏覽器上,這變數沒有意義,所以傳入的引數得是一個有意義的變數,PHP恰好有這類似的東西,如$GLOBALS,$_GET,$POST...,$GLOBALS這個變數存盤了所有的變數,所以傳入引數‘args=GLOBALS',var_dump()將列印$GLOBALS,flag就在回傳的結果中,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/114523.html
標籤:其他
下一篇:QR 碼詳解(上)
