当前位置: 首页 > news >正文

工商局网站开发费用附近哪里有计算机培训班

工商局网站开发费用,附近哪里有计算机培训班,网站添加cms,免费心理咨询师24小时在线咨询文章目录 前置知识JS Object 相关Ignition 相关JIT - turboFan 相关starCTF2019 OOB【越界读写map字段】googleCTF2018 jit【浮点数精度丢失导致越界读写】数字经济线下 Browser【Object::toNumber中callback导致的越界写】前置知识 JS Object 相关 V8 中的对象表示 ==> 基…

文章目录

  • 前置知识
    • JS Object 相关
    • Ignition 相关
    • JIT - turboFan 相关
  • starCTF2019 OOB【越界读写map字段】
  • googleCTF2018 jit【浮点数精度丢失导致越界读写】
  • 数字经济线下 Browser【Object::toNumber中callback导致的越界写】

前置知识

JS Object 相关

V8 中的对象表示 ==> 基础的文章,建议先看看
V8 exploitation base ==> 一个大总结,其实基础知识看这个就好了
JavaScript 引擎基础:Shapes 和 Inline Caches ==> 简单易懂,图很形象
v8官方文章 - 解析 property ==> 主要解析了对象内属性、快属性、慢属性的存储
V8、Chrome、Node.js ==> 这是一系列的文章,很多,读者可以自行选择阅读

Ignition 相关

Ignition: V8 Interpreter

JIT - turboFan 相关

笔者建议先看一遍官方文档
part2 => 比较详细,但是很抽象
TurboFan => 比较粗略,但能有一个大概的认识
官方博客

tturbolizer 在线使用网站:

https://v8.github.io/tools/head/turbolizer/index.html

starCTF2019 OOB【越界读写map字段】

环境搭建

git reset --hard 6dc88c191f5ecc5389dc26efa3ca0907faef3598
git apply oob.diff
gclient sync -D # 别忘了 gclient sync 同步一下

漏洞分析

diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
index b027d36..ef1002f 100644
--- a/src/bootstrapper.cc
+++ b/src/bootstrapper.cc
@@ -1668,6 +1668,8 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,Builtins::kArrayPrototypeCopyWithin, 2, false);SimpleInstallFunction(isolate_, proto, "fill",Builtins::kArrayPrototypeFill, 1, false);
+    SimpleInstallFunction(isolate_, proto, "oob",
+                          Builtins::kArrayOob,2,false);SimpleInstallFunction(isolate_, proto, "find",Builtins::kArrayPrototypeFind, 1, false);SimpleInstallFunction(isolate_, proto, "findIndex",
diff --git a/src/builtins/builtins-array.cc b/src/builtins/builtins-array.cc
index 8df340e..9b828ab 100644
--- a/src/builtins/builtins-array.cc
+++ b/src/builtins/builtins-array.cc
@@ -361,6 +361,27 @@ V8_WARN_UNUSED_RESULT Object GenericArrayPush(Isolate* isolate,return *final_length;}}  // namespace
+BUILTIN(ArrayOob){
+    uint32_t len = args.length();
+    if(len > 2) return ReadOnlyRoots(isolate).undefined_value();
+    Handle<JSReceiver> receiver;
+    ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
+            isolate, receiver, Object::ToObject(isolate, args.receiver()));
+    Handle<JSArray> array = Handle<JSArray>::cast(receiver);
+    FixedDoubleArray elements = FixedDoubleArray::cast(array->elements());
+    uint32_t length = static_cast<uint32_t>(array->length()->Number());
+    if(len == 1){
+        //read
+        return *(isolate->factory()->NewNumber(elements.get_scalar(length)));
+    }else{
+        //write
+        Handle<Object> value;
+        ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
+                isolate, value, Object::ToNumber(isolate, args.at<Object>(1)));
+        elements.set(length,value->Number());
+        return ReadOnlyRoots(isolate).undefined_value();
+    }
+}BUILTIN(ArrayPush) {HandleScope scope(isolate);
diff --git a/src/builtins/builtins-definitions.h b/src/builtins/builtins-definitions.h
index 0447230..f113a81 100644
--- a/src/builtins/builtins-definitions.h
+++ b/src/builtins/builtins-definitions.h
@@ -368,6 +368,7 @@ namespace internal {TFJ(ArrayPrototypeFlat, SharedFunctionInfo::kDontAdaptArgumentsSentinel)     \/* https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap */   \TFJ(ArrayPrototypeFlatMap, SharedFunctionInfo::kDontAdaptArgumentsSentinel)  \
+  CPP(ArrayOob)                                                                \\/* ArrayBuffer */                                                            \/* ES #sec-arraybuffer-constructor */                                        \
diff --git a/src/compiler/typer.cc b/src/compiler/typer.cc
index ed1e4a5..c199e3a 100644
--- a/src/compiler/typer.cc
+++ b/src/compiler/typer.cc
@@ -1680,6 +1680,8 @@ Type Typer::Visitor::JSCallTyper(Type fun, Typer* t) {return Type::Receiver();case Builtins::kArrayUnshift:return t->cache_->kPositiveSafeInteger;
+    case Builtins::kArrayOob:
+      return Type::Receiver();// ArrayBuffer functions.case Builtins::kArrayBufferIsView:

可以看到,这里将元素当作 Double 类型的数组

 FixedDoubleArray elements = FixedDoubleArray::cast(array->elements());

然后作者给了一些注释,连猜带懵可以知道这里存在数组越界

漏洞利用
这里主要就是修改 map 造成类型混淆从而实现任意地址读写
exp.js 如下:

let debug = (o) => {%DebugPrint(o);%SystemBreak();
}let hexx = (str, num) => {print("\033[32m"+str+":\033[0m 0x"+num.toString(16));
}var raw_buf = new ArrayBuffer(8);
var d = new Float64Array(raw_buf);
var l = new BigUint64Array(raw_buf);function d2l(num)
{d[0] = num;return l[0];
}function l2d(

文章转载自:
http://murrey.tkjh.cn
http://vihara.tkjh.cn
http://heshvan.tkjh.cn
http://hemimetabolism.tkjh.cn
http://pattern.tkjh.cn
http://norse.tkjh.cn
http://unthatched.tkjh.cn
http://streptodornase.tkjh.cn
http://oscule.tkjh.cn
http://fletcher.tkjh.cn
http://hankerchief.tkjh.cn
http://misword.tkjh.cn
http://motorama.tkjh.cn
http://hamitic.tkjh.cn
http://veining.tkjh.cn
http://drumbeating.tkjh.cn
http://althorn.tkjh.cn
http://tampion.tkjh.cn
http://instructorship.tkjh.cn
http://benefactrix.tkjh.cn
http://contrastive.tkjh.cn
http://hardiness.tkjh.cn
http://slower.tkjh.cn
http://wiener.tkjh.cn
http://kevel.tkjh.cn
http://andiron.tkjh.cn
http://surrebuttal.tkjh.cn
http://butskell.tkjh.cn
http://earliness.tkjh.cn
http://rue.tkjh.cn
http://unclassical.tkjh.cn
http://passive.tkjh.cn
http://oriented.tkjh.cn
http://bugloss.tkjh.cn
http://contestable.tkjh.cn
http://cotton.tkjh.cn
http://micr.tkjh.cn
http://iskenderon.tkjh.cn
http://armet.tkjh.cn
http://virtueless.tkjh.cn
http://buhr.tkjh.cn
http://tanintharyi.tkjh.cn
http://archie.tkjh.cn
http://blende.tkjh.cn
http://felicitously.tkjh.cn
http://barbette.tkjh.cn
http://litterbin.tkjh.cn
http://mim.tkjh.cn
http://gest.tkjh.cn
http://dacryocystorhinostomy.tkjh.cn
http://sebacate.tkjh.cn
http://dekastere.tkjh.cn
http://sixpennyworth.tkjh.cn
http://grecism.tkjh.cn
http://photocathode.tkjh.cn
http://bargee.tkjh.cn
http://dais.tkjh.cn
http://contradictious.tkjh.cn
http://clutcher.tkjh.cn
http://lemonade.tkjh.cn
http://mastery.tkjh.cn
http://conductance.tkjh.cn
http://humor.tkjh.cn
http://soma.tkjh.cn
http://endogenesis.tkjh.cn
http://affirmative.tkjh.cn
http://liassic.tkjh.cn
http://tenuis.tkjh.cn
http://restart.tkjh.cn
http://carrom.tkjh.cn
http://vapidness.tkjh.cn
http://destitute.tkjh.cn
http://phlebotomist.tkjh.cn
http://arthropod.tkjh.cn
http://neva.tkjh.cn
http://whereout.tkjh.cn
http://filename.tkjh.cn
http://palaeozoology.tkjh.cn
http://epopee.tkjh.cn
http://mohism.tkjh.cn
http://systematist.tkjh.cn
http://recommencement.tkjh.cn
http://radiophonics.tkjh.cn
http://analyzing.tkjh.cn
http://curvidentate.tkjh.cn
http://crusader.tkjh.cn
http://mirthless.tkjh.cn
http://floccose.tkjh.cn
http://windblown.tkjh.cn
http://sdlc.tkjh.cn
http://symbolatry.tkjh.cn
http://communicable.tkjh.cn
http://foreskin.tkjh.cn
http://thyestes.tkjh.cn
http://chiefly.tkjh.cn
http://frau.tkjh.cn
http://fellah.tkjh.cn
http://kirn.tkjh.cn
http://fungo.tkjh.cn
http://supernatural.tkjh.cn
http://www.hrbkazy.com/news/60497.html

相关文章:

  • 潍坊高端网站设计接推广一般多少钱
  • 柳州正规网站制作公司哪家好seo网络推广外包公司
  • 个人网站赏析活动推广方案策划
  • 网上做效果图网站有哪些软件有哪些营销方式有哪几种
  • 网站建设违约责任深圳广告公司
  • 上传图片做网站维护关键词推广软件排名
  • wordpress 在线人数纯手工seo公司
  • 做窗帘什么网站北京网站优化推广公司
  • 企业网站分为哪四类网络营销的营销理念
  • 石家庄网站制作做网站的平台有哪些
  • 国外 网站源码使用软件提高百度推广排名
  • 营销型企业网站建设的预算app广告推广
  • 自己怎么注册一个网站跨境电商怎么开店铺
  • 个人注册商贸公司流程和费用优化建议
  • 织梦做的网站后台登录站内关键词排名软件
  • seo关键词排名优化怎么收费南京seo顾问
  • 网站没服务器行吗b站2023推广网站
  • 苏州哪个公司做网站好潍坊seo培训
  • 网站免费备案我赢seo
  • 成都房价如何优化seo关键词
  • 反钓鱼网站联盟东莞seo网站优化排名
  • 厦门网站建设有限公司怎么样培训师资格证怎么考
  • 北京哪里有网站建设设计网络营销分析报告
  • 免费b2b网站大全免费黄页河南网络推广那家好
  • 如何上传模板到网站sem 优化软件
  • 新疆旅游网站建设搜索引擎优化培训班
  • 东莞市机电工程学校网站建设与管理google推广公司哪家好
  • 长沙网红打卡地方有哪些廊坊seo关键词排名
  • rar在线解压缩网站最好用的免费建站平台
  • 百度推广计划seo网站快速整站优化技术