安卓1111111111

显示和功能逻辑分离,程序的维护性增强
manifests(配置文件)
res(resource)资源
drawable(图片,跟图片相关的文件)
layout(布局文件)***
mipmap(图标)
values(值相关的资源文件)
colors(颜色)
strings(字符串资源)
sytles(样式)
R.id.
R.layout.
R是自动生成的文件
带final类不能有子类***************

监听器是接口
实现接口
类 implements 接口中
view是viewgroup的父类

ConstraintLayout约束布局
LineLayout 线性布局
父类都是ViewLayout
1.设置线性布局的方向
orientation
2.居中实现
1)gravity:父控件所有子控件相对于父控件的位置(match_parent)
2)layout_gravity:线性布局相对于它的父控件在发生位置变化(wrap_content)

2、命名规范
1、java命名规范
1.1、项目名全部小写
1.2、包名全部小写
1.3、类名首字母大写,若类名由多个单词构成,每个单词首字母大写,即驼峰命名法
1.4、变量名、方法名首字母小写,若其由多个单词构成,每个单词首字母大写,即小驼峰命名法
1.5、常量名全部大写
1.6、名称只能由数字、字母、下划线、$符组成,不能以数字开头
1.7、尽量不要使用拼音 或者 英语掺杂拼音(如:StudentDianHua || MyHomeDiZhi 等)

2、前端命名规范
2.1.一律小写;
2.2.尽量用英文(汉字跨域或引入会需要解码,很麻烦);
1.3.尽量不加中杠和下划线;
2.4.尽量不缩写,除非一看就明白的单词,如:wrapper可以写成wrap。


前两位透明值,后面红绿蓝

TextView EditText
weight属性是根据剩余空间
如果在横向上使用weight进行空间的分配,让width设为0dp
纵向height设为0dp
插入图片把资源名字改成符合java命名规则的名字
src前景,,,background背景
shape:定义基本形状
椭圆,长方形,线性,环形,正方形,圆角矩形
定义样式
填充色solid,描边stroke,圆角corners,尺寸size,间距padding,渐变
android:shape默认长方形
cornre radius半径,设置四个圆角相同,半径越大弧越大
stroke描边color颜色width宽度,没有宽度无法显示虚线的边两个属性都要设置,否则不显示
通过background把定义的形状放到控件上去
按钮点击变色
drawable根元素selector selector_Button 开头
按压的时候是true背景图片drawable重新创建drawable目录res创建资源目录Densitycheck选中,
单选按钮和复选按钮
ImageView特指放图片的控件水平的线性布局,设置权重editText提示信息属性垂直的线性布局
闪退原因,寻找:
空指针异常,空值转换异常(run)
cause by
Toast弹出提示信息 Toast.makeText(上下文对象(这个提示信息要提示在哪个页面上)


水平H,垂直V
margin,padding如何用,错误信息提示,未输入按钮不可用,点击叉号消失

相对布局RelativeLayout:
特点:
注意:把基准放好(参照物),并且要设置id*****************
align:上下左右边缘对齐,两个空间的上或下或左或右
to:相对于某个控件?(@id,不是+id)
centerInParent,最中间,H水平居中,V垂直居中
build.grade 修改版本

android : layout_marginxxx的用法是指当前组件距离其父组件在xxx方向上的边距
在这里插入图片描述
android : padding(xxx) — padding是相对于当前组件而言的,就是指组件内的文本距离当前组件xxx 位置的边距
在这里插入图片描述

我是个渗透测试人员,如何这个是个提交工单的Post请求Body, 请问可能存在哪些注入点, XSS、sql注入等, 提供测试的payload和具体位置。 {"ticketName":"111111111111111111","deviceInfo":{"modelName":"cccccc","snLeft":"1111111111","snRight":"2222222222","selected":true,"index":1},"orderInfo":{"platformType":2,"number":"11111111111111111","consigneeDisplayName":"","consigneeCountryCode":"","consigneeMobilePhone":"","address":"","purchasedAt":null},"callAppointment":{"on":false,"startTime":0,"endTime":0,"displayName":"","countryCode":"1","mobilePhone":""},"form":[{"name":"问题的详细描述","type":"textarea","options":[],"placeholder":"此项用于测试多行文本显示","required":true,"enable":true,"id":"fd29f9c2-9409-4210-a8c5-272e84dd722a","value":"111111111111111"},{"name":"该问题如何影响您的使用?","type":"multiselect","options":[{"id":"bead23a1-6dd5-437b-acb5-94e231e7c246","editing":false,"value":"音质","value_zh":"音质","value_en":"hhh","value_ja":"日语"},{"id":"0e123bd9-6c72-44f6-add2-e8559c4c0b83","editing":false,"value":"连接性"},{"id":"bec085bf-19b3-4e2b-9edd-cebffccf736b","editing":false,"value":"电池寿命"},{"id":"1256f1e9-ea78-4715-9dc6-ab0e3db07789","editing":false,"value":"舒适度"}],"placeholder":"","required":true,"enable":true,"id":"5afee686-2b73-4a0a-bcb0-c488ff1c680e","name_zh":"该问题如何影响您的使用?","name_en":"affect","name_ja":"日语","value":["音质"]},{"name":"问题的截图或照片","type":"image","options":[],"placeholder":"最多上传3张","required":false,"enable":true,"id":"c133b975-ae4a-49f4-82d7-84be2b34dbf2","value":[]},{"name":"手机操作系统版本(例如 iOS 14、Android 11)","type":"text","options":[],"placeholder":"","required":false,"enable":true,"id":"5726a053-2955-4d7d-ba05-d2d33f1db4d7","value":"22222"},{"name":"问题发生频率","type":"select","options":[{"id":"c2915285-0d69-4042-8d21-370366db2ca4","editing":false,"value":"总是"},{"id":"45162e45-c1d3-4016-8c42-073874b8f083","editing":false,"value":"有时"},{"id":"31c5028b-0372-43eb-882d-21544c71bf61","editing":false,"value":"很少"}],"placeholder":"","required":false,"enable":true,"id":"3b82aae3-4f41-4b47-b5d2-d8194c88694f","value":"有时"},{"name":"下拉单选","type":"select","options":[{"id":"3305f52b-dbff-4829-ac39-75aff3a1b0c5","editing":false,"value":"单选1"}],"placeholder":"","required":false,"enable":true,"id":"1c912de0-d9a9-445e-bee0-fed2ce2eccfb","value":"单选1"}]}
03-15
<think>嗯,我现在需要分析这个POST请求的Body,找出可能的注入点,比如XSS、SQL注入等等。首先,我应该仔细看看这个JSON结构,确定哪些字段是用户输入的,可能存在风险的地方。 首先看最外层的键,"ticketName"的值是"1111...",可能是一个文本输入,这里用户可能会输入一些恶意内容。比如,如果这个字段被存储到数据库中,可能会有SQL注入的可能。或者如果在前端显示的时候没有转义,可能导致XSS。但具体要看后端如何处理这个值。测试的话,可以尝试在ticketName里加单引号或者SQL语句片段,比如' OR 1=1--,看看是否有报错或者异常。 接下来是deviceInfo里面的modelName、snLeft、snRight,这些可能都是用户填写的设备信息。比如modelName是"cccccc",这里同样可能存在注入。需要测试这些字段,比如插入<script>alert(1)</script>看看是否触发XSS,或者SQL注入的payload。 然后看orderInfo里的number、consigneeDisplayName、countryCode、mobilePhone、address等字段。这些可能都是用户输入的信息,比如电话号码可能有特殊字符,address可能较长,需要测试是否对输入进行处理。例如,在address字段中注入XSS的payload,或者尝试SQL注入的语句。 callAppointment里的displayName、countryCode、mobilePhone同样可能存在类似的问题,比如在displayName里加入JS代码。 接下来是form数组,里面的各个表单项。比如第一个元素是"问题的详细描述",类型是textarea,这里用户可能输入多行文本,是XSS的高发区域。比如输入<script>alert(1)</script>或者使用图片的onerror事件,比如<img src=x onerror=alert(1)>。另外,如果后端将这些内容存入数据库,可能存在SQL注入,比如' OR SLEEP(10)--,测试是否有延迟。 第二个表单项是multiselect,但它的value是一个数组,比如["音质"],这里可能选项是固定的,但如果用户可以自定义选项的话,可能会有问题。不过根据数据,选项是预设的,所以可能风险较低。不过如果后端处理时没有正确验证,可能还是有问题,比如发送非预设的值。 接下来是image类型,可能上传图片,但这里可能更多的是文件上传漏洞,比如上传恶意文件,但题目主要关注XSS和SQL注入,可能暂时不考虑。 然后有手机操作系统版本,类型是text,用户输入的是"22222",这里同样可能存在注入。比如输入' OR 1=1-- 或者JavaScript代码。 问题发生频率是select,但value是"有时",可能选项固定,但同样要测试是否可能篡改value,比如发送恶意值。 其他类似的select类型字段也可能存在类似的问题,不过如果后端严格检查选项,可能风险较小。 现在需要总结可能的注入点位置,比如所有value字段,尤其是用户可输入的textarea、text类型,以及可能被拼接进SQL语句的地方。对于XSS,要看这些值是否在返回给前端时被转义,如果没有,就可能触发存储型XSS。而SQL注入则要看是否使用参数化查询,如果拼接字符串,就会存在风险。 比如,针对每个字符串类型的value字段,测试基本的SQL注入payload,如' OR '1'='1,或者时间盲注的payload,比如' OR SLEEP(5)--,然后观察响应时间是否有延迟。对于XSS,测试<script>标签、img的onerror事件,或者其他的HTML事件处理属性。此外,还要注意JSON结构中的某些字段是否可能被用于其他注入,比如NoSQL注入,如果后端使用MongoDB之类的数据库,可能会有不同的注入方式,比如通过运算符$ne等。 不过根据用户的问题,主要关注XSS和SQL注入,所以需要列出这些字段的可能位置,并给出具体的测试payload。例如: - ticketName: 测试SQL注入:' OR 1=1 --,XSS:<script>alert(1)</script> - deviceInfo.modelName: 同样的payload - orderInfo.number: 同上 - form数组中各个text、textarea的value字段,如问题的详细描述的value是"1111...",可以测试XSS和SQL注入 - 手机操作系统版本的value字段也是用户输入,同样需要测试 此外,还要注意是否有任何字段的内容会被用来拼接命令,比如系统命令注入,但题目里可能没有涉及,所以暂时不考虑。 最后,要组织这些可能的注入点,按字段分类,给出payload示例,并说明测试的位置。</think>### 潜在注入点分析及测试方法 #### 1. **SQL注入** **风险字段**(需检查是否直接拼接SQL语句): - `ticketName` - `deviceInfo.modelName`、`deviceInfo.snLeft`、`deviceInfo.snRight` - `orderInfo.number`、`orderInfo.consigneeDisplayName`、`orderInfo.address` - `callAppointment.displayName` - `form` 中 `type="text"` 或 `type="textarea"` 的 `value` 字段(如“问题的详细描述”、“手机操作系统版本”) **测试Payload**: - 基础探测:`' OR 1=1 --`(观察是否返回异常或数据变化) - 时间盲注:`' OR SLEEP(5)--`(观察响应是否延迟5秒) - 联合查询:`' UNION SELECT NULL,user(),version()--`(需适配字段数量) --- #### 2. **XSS(存储型/反射型)** **风险字段**(需检查输出时是否转义): - `ticketName`(可能在工单列表显示) - `deviceInfo.modelName`(可能在设备详情页显示) - `form` 中 `type="textarea"` 或 `type="text"` 的 `value` 字段(如“问题的详细描述”、“手机操作系统版本”) **测试Payload**: - 基础探测:`<script>alert(1)</script>` - 绕过简单过滤:`<img src=x onerror=alert(1)>` - 事件触发:`" onfocus="alert(1)" autofocus="` --- #### 3. **NoSQL注入** **风险场景**(若后端使用MongoDB等数据库): - 所有嵌套的JSON字段可能被解析为查询运算符(如 `$ne`)。 **测试Payload**: - 绕过登录:`"deviceInfo": {"modelName": {"$ne": "valid_value"}}` - 逻辑探测:`"callAppointment.mobilePhone": {"$gt": ""}` --- #### 4. **命令注入** **风险字段**(若参数用于系统命令拼接): - `deviceInfo.snLeft`、`deviceInfo.snRight`(可能用于生成设备日志) **测试Payload**: - 基础探测:`; whoami` 或 `| ping -n 3 127.0.0.1` --- ### 具体测试示例 #### 字段:`form` 中“问题的详细描述”的 `value` ```json { "name": "问题的详细描述", "type": "textarea", "value": "<script>alert(1)</script>" // XSS测试 } ``` #### 字段:`ticketName` ```json { "ticketName": "' OR 1=1 --", // SQL注入测试 } ``` #### 字段:`deviceInfo.modelName` ```json { "deviceInfo": { "modelName": "\" onmouseover=\"alert(1)\"", // XSS测试 } } ``` --- ### 防御建议 1. **输入过滤**:对用户输入进行白名单验证(如手机号仅允许数字)。 2. **参数化查询**:避免SQL拼接,使用预编译语句。 3. **输出转义**:根据上下文(HTML/JS/URL)对输出内容编码。 4. **内容安全策略(CSP)**:限制可执行脚本的来源。 5. **NoSQL防护**:严格校验查询结构,禁止运算符穿透。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值