API FUZZING流程说明
REST API FUZZING 实验流程我的设备:windows11 + 谷歌pixel + 安卓9环境:adb + AppUIAutomator + mitmproxy
adb调试建议有线连接,不用频繁的debug而且数据传输快,USB连接之后:
adb dedvices #查看当前连接的adb设备
mitm抓包部分
如果使用校园网抓包,要在电脑打开移动热点,确保手机和电脑在一个网段内,才能成功抓包。
连上热点后,电脑输入ipconfig,获取WLAN的ipv4地址
打开手机,在wifi那里配置代理,ip地址输入上一步抓到的,端口号默认为8080。
adb 获取APK包名可以使用adb来为手机安装APK:
adb install -d xxx.apk
安装完成后,打开该apk,然后运行:
adb shell dumpsys window | findstr mCurrentFocus
获取手机当前正在运行activity的包名,包名为从左到右数第一个com开头的字段:上图中包名为com.wuba
AppUIAutomatorAppUIAutomator在使用前, ...
中级 SQL 语句
常用的 SQL 命令基本思路:
JOIN 做 关联查询,WHERE 做条件限制,函数做计算。
查询每个部门的平均年龄
使用 AVG 函数来求均值,JOIN 表加条件,GROUP BY 来按部门展示
12345678SELECT 部门信息.部门编号,部门信息.部门名称, AVG(员工信息.年龄) AS 平均年龄FROM 员工信息JOIN 部门信息 ON 员工信息.所在部门 = 部门信息.部门编号GROUP BY 部门信息.部门编号, 部门信息.部门名称;
mitmproxy
查询和李文萌不在一个部门的员工
展示除了特定值以外数据,使用 != 来限制,先在部门表将和李文萌不在一个部门的员工给选择出来,再通过关联查询
12345678SELECT 员工姓名FROM 员工信息WHERE 所在部门 != ( SELECT 所在部门 FROM 员工信息 WHERE 员工姓名 = '李文萌')AND 员工姓名 != '李文萌';
查询每个员工的工号,姓名,所在部门名称,以及其部门领导姓名
用 ...
【月饼杯】Serialize - str_replace字符逃逸
Serialize 注入 - str_replace漏洞利用题目来自月饼杯 web1_此夜圆题目代码如下:
123456789101112131415161718192021222324252627282930313233343536<?phperror_reporting(0);class a{ public $uname; public $password; public function __construct($uname,$password) { $this->uname=$uname; $this->password=$password; } public function __wakeup() { if($this->password==='yu22x') { include('flag.php'); ...
【攻防世界】mysql 注入 1
SQL注入-更改表打开题目,我们看到:猜测是考察 sql 注入,我们输入1’查看是否有注入机会:可以看到成功执行了,所以我们要查看能在这个数据库中获取到什么信息,执行语句:“1’;show tables #”这里的用单引号将查询语句结束,并用#注释掉后面的引号防止报错,这里的 show databases 就会执行了。可以看到两个表,”1919810931114514”和“words”,我们先试一下能不能直接查询表,使用:“1’;select * from `1919810931114514` # 发现:禁用了以上语句,那我们就要想办法怎么拿到信息了,我们看到窗口有一个功能,这个功能多半是查询语句构造1’ or 1=1 #查询表内所有内容,没有发现 flag,说明不在这个表,这代表我们要替换表,构造:“1’;show columns from `1919810931114514` #发现了 flag:那说明这个查询语句默认在表 word 里,题目似乎没有禁用 rename 和 alter,我们采取更改预设表的形式来获取 flag,构造:1’; rename tables `w ...
【攻防世界】 easy_python 模板注入1
Python 模板注入拿到题目,直接告诉我们是 python template 问题,以 python 模板注入的角度切入。对于很多网站,为了方便,都会套用一个 html 模板,模板会给一个接口,用 python 将这段代码以作为变量的形式套入进模板。这里的模板注入就是,我们可以在这个变量里面注入我们想要的代码,获取到信息,注入的时候用花括号“{ {} }”包裹住 code。本题中,我们测试{ {1+5} }:果不其然,代码执行了,返回了 6,接下来进行正式的注入,常见的注入方法有以下几种:以下所有的方法均要被“__” 包裹
__class__ : 返回对象所属的类。
__mro__ : 返回基类元组。
__base__:返回基类。
__subclasses__()[]:返回子类。
__init__ :初始化类。
__globals[]__ : 对包含函数全局变量的字典的引用,说人话就是调用全局的包,如’os’等。
在注入之后我们通常使用两种方法来操控控制台获取信息:
os.popen(“file_name”) :返回文件内容。
os.system : 返回状态码。
开始操作, ...
【攻防世界】weak_auth 密码爆破
简单密码爆破打开题目后,看到一个登录页面.我们先随机输入一些东西进去,看看效果:看到 login as admin,我们将用户名改为 admin 后,发现弹出窗口不一样。于是就锁定了用户名是 admin,然后对密码进行爆破。使用 burp 进行爆破,选用爆破字典,更改参数:进行爆破后我们发现,密码“123456”获取到的响应包的长度显著不同,点开查看后,发现已经成功登录并获取到 flag。
【攻防世界】simplePHP PHP代码审计
EASY PHP漏洞打开 simplephp 这道题我们拿到的信息。首先是可以看到代码中有两个 GET,说明这道题可以通过构造 url GET请求来渗透。代码中出现了”==”,这个在 php 中是弱类型比较,弱类型比较与“===”不同,不会要求他们格式也相同,而是会先将两个不同格式的变量转换为相同格式再比较,对于“$a==0&&a”我们可以通过构造 0 的 url 编码来绕过,首先 GET 请求的时候会先一次解码,所以这里的 0 我们要二次编码,编码成%2530,然后在==这里会转换成 0 通过,在判 a 为真这里也会通过,因为不会转换类型。对于 b 的构造,要求其大于 1234,首先先来了解 php 中的各类型转换:string -> int,会扔掉除了 int 类型以外的所有符号,在 php 比较里面也是这样,比如拿字符串和 int 类型做比较,会导致字符串类型过滤掉除了 int 以外的,所以不能比较 ascii 码。以此类推,会转换成被对比对象的格式,其他格式一律清除。 ...
【攻防世界】robotstxt
robots.txtrobots.txt 文件是一个文本文件,使用任何一个常见的文 本编辑器,比如 Windows 系统自带的 Notepad,就可以创建和编辑它。robots.txt 是一个协议,而不是一个命令。 robots.txt 是搜索引擎中访问网站的时候要查看的第一个 文件。robots.txt 文件告诉蜘蛛程序在服务器上什么文件 是可以被查看的。
用途robots.txt 常用于过滤掉不希望搜索引擎能搜索出来的文件,这种文件常常是敏感的,本体中,如下:在获取到/fl0g.php的信息后,放在url里 get 请求即可获取到 flag。
about
简介关于博客这是一个用于记录学习笔记的博客,包括日常学习和练习题,比赛赛题的 WriteUp。
关于我中山大学软件工程学院学生/CTFer Web 方向/音游玩家我的 QQ:1789697833欢迎来找我玩!