NewStarCTF2023 Week3题解
NewStarCTF2023,或者应该叫OldBirdCTF🤣本文为第三周部分题目的题解,可能与官方wp有出入,请见谅。包括knapsack,Rabin's RSA,Door,小明的密码题,babyrandom,eazy_crt,阳光开朗大男孩,2-分析,大怨种,键盘侠,滴滴滴,medium_sql,include🍐
文件包含漏洞
本地文件包含(LFL)漏洞原理文件包含漏洞的产生原因是 PHP 语言在通过引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过合理的校验,或者校验被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。
当被包含的文件在服务器本地时,就形成的本地文件包含漏洞。
漏洞利用利用条件:
(1)include()等函数通过动态变量的方式引入包含文件; (2)用户能够控制该动态变量。
12345include() //使用此函数,只有代码执行到此函数时才将文件包含进来,发生错误时只警告并继续执行。include_once() //功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。require() //使用此函数,只要程序执行,立即调用此函数包含文件发生错误时,会输出错误信息并立即终止程序。require_once() //功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。
通常情况下,本地文件包含漏洞可以结合文件上传漏洞使用
通过文件上传漏洞上传的图片中写入恶意代码,然后用 LFI 包含调用,就会执行图片里的PHP代码
包含Apac ...
NewStarCTF2023 Week2题解
NewStarCTF2023,或者应该叫OldBirdCTF🤣本文为第二周所有题目的题解,可能与官方wp有出入,请见谅。包括partial decrypt,Rotate Xor,broadcast,halfcandecode,不止一个pi,滴啤.永不消逝的电波,新建Word文档,1-序章,WebShell的利用
python3 网络爬虫笔记
最近这段时间将开始研究python在网络爬虫上的应用
既是大创结题项目的需求,同时也是为了拓宽自己的技术视野
本文作为学习笔记,同时也是编写爬虫程序过程中的经验总结
希望本阶段学习能让我熟练掌握网络爬虫,以后能将其用作其他网络安全领域的工具延申
因为是初次入门网络爬虫,那么在编写爬虫应用程序之前,很有必要搞清楚网络爬虫的原理
网络爬虫原理URLURI(Uniform Resource Identifier):统一标识符
URL(Uniform Resource Locator):统一资源定位符
URI分为URL和URN或同时具备locators 和names特性的一个东西
网络世界中更常见的还是URL,也就是平时浏览器中输入的web地址
但是URL也有它的格式规范
scheme://[username:password@]hostname[:port][/path][;parameters][?query][#fragment]
这里解释几个计网课上没有学到的概念
scheme(protocol):协议,例如http、https、ftp等
username:password:当URL ...
ctfshow 命令执行模块
web29源码如下
1234567891011121314151617181920212223<?php/*# -*- coding: utf-8 -*-# @Author: h1xa# @Date: 2020-09-04 00:12:34# @Last Modified by: h1xa# @Last Modified time: 2020-09-04 00:26:48# @email: h1xa@ctfer.com# @link: https://ctfer.com*/error_reporting(0);if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag/i", $c)){ eval($c); } }else{ highlight_file(__FILE__);}
代码对flag字符进行了过滤,我们可以使用通配符绕过
首先ls一下查看 ...
命令注入漏洞 远程命令/代码执行
远程命令执行漏洞原理如果目标站点在设计时期过滤功能不严格或数据与代码区分不明显,极易导致命令执行漏洞的存在。
总结下来,原理就是:1. 用户输入未过滤或净化的参数。2. 输入被拼接到系统命令中执行。
常见系统命令执行函数system() 执行命令输出结果
exec() 执行命令,并返回结果的最后一行
shell_exec() 执行命令,并返回所有结果
passthru() 执行命令输出结果
``(反引号) 功能和shell_exec() 相同,如果shell_exec() 被禁用,则反引号也无法使用,但如果只是被过滤,则可以用反引号代替shell_exec()
$a = popen(要执行的命令,参数) 参数可以是’r’和’w’,为r时返回值为包含执行结果的文件指针
使用fread($a,1024)可以输出返回值
常见系统命令管道符号Linux常用管道符
; 前面的执行完执行后面的,排队| 前面命令的打印结果作为后面命令的输入||当前面的执行出错时,执行后面的&相当于or,前面无论真假都会执行后面的&& 相当于and,前假后不执行,前真后执行
Windows常用 ...
NewStarCTF2023 Week1题解
NewStarCTF2023,或者应该叫OldBirdCTF🤣本文为第一周所有题目的题解,可能与官方wp有出入,请见谅。包括Caesar's Secret,brainfuck,Fence,Small d,babyrsa,Vigenère,babyxor,Affine,babyencoding,babyaes,CyberChef's Secret,机密图片,空白格,流量!鲨鱼!
请求伪造漏洞 CSRF&SSRF
CSRF漏洞原理CSRF(跨站请求伪造,Cross-Site Request Forgery)允许攻击者在不知情的用户的帮助下,以该用户的身份执行恶意请求。这类攻击通常针对已经向某网站进行身份认证的用户(例如,通过登录认证的用户)。
实际上攻击者并没有获取到用户在网站上的具体Cookie内容,而且请求头和请求体的内容也都是由攻击者构造的
CSRF攻击的核心在于利用了web应用程序对用户的信任。浏览器允许网站A向和自己无关的网站B发起请求(并携带网站B的Cookie)。
假设用户已经登录了一个银行网站,并在同一浏览器中访问了另一个恶意网站。恶意网站可以包含一些请求,如HTML表单或JavaScript代码,这些请求被设计为自动向银行网站发送请求。因为用户已经在银行网站上验证了其身份,所以银行网站会认为这些请求是合法的用户请求。
在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为”one click”攻击。
场景举例下面的场景转载自Pikachu靶场
场景需求:小黑想要修改大白在购 ...
CTF Web XSS攻击
XSS漏洞原理XSS全称:跨站脚本(Cross Site Scripting)
攻击者会向web页面(input表单、URL、留言版等位置)插入恶意JavaScript代码,导致管理员/用户访问时触发,从而达到攻击者的目的。
主要原因还是服务器对用户提交的数据过滤不严,导致浏览器把用户的输入当成了JS代码并直接返回给客户端执行,从而实现对客户端的攻击目的。
事实上该漏洞在实战中还是需要搭配其他攻击手段来使用,单独利用XSS漏洞可能只能获取用户的Cookie资料
漏洞类型
XSS类型
存储型
反射型
DOM型
触发过程
1. 黑客构造XSS脚本2. 正常用户访问携带XSS脚本的页面
正常用户访问携带XSS脚本的URL
正常用户访问携带XSS脚本的URL
数据存储
数据库
URL
URL
谁来输出
后端Web应用程序
后端Web应用程序
前端JavaScript
输出位置
HTTP响应中
HTTP响应中
动态构造的DOM节点
是否持久
是
否
否
漏洞防御
对输入和URL参数进行过滤(白名单和黑名单)检查用户输入的数据中是否包含一些特殊字符,如< ...
ctfshow SQL注入模块
SELECT模块web171(经典sql注入)题目给的部分源码如下
12//拼接sql语句查找指定ID用户$sql = "select username,password from user where username !='flag' and id = '".$_GET['id']."' limit 1;";
可以看到执行的sql语句接收$id这个传参,而flag大概率藏在username字段值为flag的数据中
首先闭合前面的单引号,然后拼接上or username='flag',由于后面已经存在单引号,可以留出单引号的位置
所以payload为1' or username='flag
web172(字段值绕过)题目给的部分源码如下
123456//拼接sql语句查找指定ID用户$sql = "select username,password from ctfshow_user2 where username !='flag ...