dcnctf-web-wp(部分)
文章目錄
- web1(爆破)
- web2(php偽協議)
- web3(user-agent和x-forwarded-for)
- web4(命令執行)
- web5(sql注入)
- web6(session文件包含)
- web7(認為環境有問題)
- web8(認為環境有問題)
- web9沒有這道題...
- web10沒有這道題...
- web11(php偽隨機數)
- web12(php弱類型比較)
- web13(client-ip)
- web14沒有這道題...
- web15(php反序列化)
web1(爆破)
亂點一番后,發現無法注冊、萬能密碼沒用
登陸失敗顯示如下
或
提示用戶名和密碼就很煩,密碼簡單?直接bp用Cluster bomb爆吧
剛開始以為下面的就是flag…太年輕了
flag最后在
web2(php偽協議)
猜想是文件包含,使用php偽協議獲取flag.php源碼
payload:
得到base64加密的內容后解密即為flag
base64加密內容:PD9waHANCi8vRENOe0luY2x1ZGVfRmxhZ19TdWNjZXNzfQ0KPz4= 解密: <?php //DCN{Include_Flag_Success} ?>web3(user-agent和x-forwarded-for)
web4(命令執行)
這題和DVWA的命令執行差不多,經過測試發現它還過濾的不少,測試后原來和dvwa的high級別差不多,使用||空格繞過
最后獲取flag時,cat被過濾了,more也被過濾了,最后用的less
web5(sql注入)
一開始以為是爆破這個id…結果不是,最后用sqlmap跑出來的
payload:
web6(session文件包含)
session?來看看
原來我們通過dcn寫入的內容會保存在session文件中
再來研究下源碼
利用變量dcn寫入一句話到session中,然后使用filename包含利用我們的session文件
前提先記得我們的PHPSESSID,我是u6ttu7suv6mca5nnu04satee40,所以我以后直接在session目錄中搜索我的id即可
比如寫入一個<?php system('whoami');?>,(當然,你也可以寫個一句話利用),這里我對payload進行了url編碼,因為不編碼,最后session文件中只有<?php,如果不想編碼,直接使用瀏覽器url提交即可
或
查看我們的session文件中是否已經寫入
利用
注意:這個session用過一次后就會自動清除內容為默認值:username|N;,所以每使用一次命令后,就要重新向session文件中寫內容,再執行
ls只看到index.php和session,而且cat還不能用,雖然可以php://filter,但沒意義,其實我是在別人的session中看到有.flag.php這個文件…我用find / -name flag都沒找到,用find / -name *flag*才找到…瀏覽器看有點亂,推薦bp
可以看看相關文章:https://www.cnblogs.com/Oran9e/p/8082962.html 等等
web7(認為環境有問題)
是個文件上傳,上傳返回路徑后,文件不能訪問,返回500,沒辦法了…
web8(認為環境有問題)
時間確實夠長的,打不開…
web9沒有這道題…
web10沒有這道題…
web11(php偽隨機數)
這讓我想到了I春秋的那道偽隨機數,其實沒他那么難,點擊Submit就是flag,我…真…的…
web12(php弱類型比較)
3C3F7068700A0A6572726F725F7265706F7274696E672830293B0A66756E6374696F6E206E6F6F746865725F736179735F636F7272656374282474656D70290A7B0A2020202024666C6167203D2027666C61677B2E2E2E2E2E2E2E2E2E2E2E2E7D273B0A20202020246F6E65203D206F726428273127293B20200A20202020246E696E65203D206F726428273927293B200A20202020246E756D626572203D202733373335393239303534273B0A20202020666F7220282469203D20303B202469203C207374726C656E28246E756D626572293B2024692B2B290A202020207B200A2020202020202020246469676974203D206F7264282474656D707B24697D293B0A2020202020202020696620282028246469676974203E3D20246F6E65292026262028246469676974203C3D20246E696E652920290A20202020202020207B0A20202020202020202020202072657475726E2022666C617365223B0A20202020202020207D0A202020207D0A20202020696628246E756D626572203D3D202474656D70290A202020202020202072657475726E2024666C61673B0A7D0A2474656D70203D20245F4745545B2770617373776F7264275D3B0A6563686F206E6F6F746865725F736179735F636F7272656374282474656D70293B0A3F3EASCII Hex解碼:
<?phperror_reporting(0); function noother_says_correct($temp) {$flag = 'flag{............}';$one = ord('1'); //49注:這里要是用php的ord,不要使用其它,否則數字不對$nine = ord('9'); //57$number = '3735929054';for ($i = 0; $i < strlen($number); $i++)//for ($i = 0; $i < 10; $i++){ $digit = ord($temp{$i});//$temp{$i}表示將$temp的內容看做數組,$i為鍵值,如$temp{0},為3,$temp{0}為7等...if ( ($digit >= $one) && ($digit <= $nine) ){return "flase";//千萬不能執行這個return,因為這是在一個函數中,執行return會立刻終止當前函數的代碼,繼續執行函數外的代碼}}if($number == $temp)//3735929054==$temp才能返回flagreturn $flag; } $temp = $_GET['password']; echo noother_says_correct($temp); ?>這是php弱類型比較,可以將3735929054進行16進制轉換來繞過,轉換成0xdeadc0de來繞過
可以參考:https://www.cnblogs.com/anbus/p/10000571.html
web13(client-ip)
點擊后返回
查看源碼發現4.3.2.1這個ip,搞一搞
web14沒有這道題…
web15(php反序列化)
我網卡?反正是個圖片,下載了看看
記事本打開看到最后有ym.txt,一時間我以為是隱寫…結果沒搞得出來
最后想到會不會在網站中,果然!
是一道反序列化的題目,這是CG-CTF的題(可以參考https://www.cnblogs.com/nul1/p/9417484.html),直接上payload
結果放到ym.txt后面還用不起來,也對啊,這是txt后綴,那把他刪了,還是不行,最后找來找去終于在剛進入那個頁面的源碼中找到了dcnctf.php,一開始沒在意,害…
好了,最后的payload:
這就當做完了吧(沒環境的我可不背鍋,haha),還挺累的,有些知識之前沒見過,也有些也差點忘了,總之,收獲還是有的。
總結
以上是生活随笔為你收集整理的dcnctf-web-wp(部分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 道德经多少字
- 下一篇: 如何在 iPhone 锁屏页面显示天气详