week1

2022-12-28 WP

0x00 T1 reverse3

前几天没注意到要发wp,现在补一下。最近在学汇编,pwn题没做新的了。想到之前了解到hws的pwn会考花指令,听hjx他们说那是re的内容,就特意去做了点re。

题目来源是buuctf的reverse3。

0x01 wp

第一步,查壳

没壳,32位,准备丢ida

第二步,反编译



观察到想要输入的数据和flag一样,注意27-28行代码,需要把第j个数据+j完成变换才行。也就是说我们要将结果的j位-j获得flag。

第三步,去找“结果”

应该就是这个str2的内容。



不过寻找的时候注意到如下内容:





看到字符串应该确定就是base64了,让赛博大厨搞定他(不是)

最后,写脚本并解密



python能力逐渐退化了hhhhhhhhhhhh

运行得到



得到flag

week2

2023-01-10 WP

前些日子学汇编+阳了,请假后睡了一个星期过来,现在非常高兴终于能和大家一起打比赛一起写wp啦~

0x00 T1 hello_pwn

0x01 题目来源

题目来自攻防世界pwn栏目第二题:hello_pwn

一道栈溢出的基础题目。

0x02 题解

1.分析文件

第一步:checksec 文件名

2.IDA反编译

拖入ida静态分析

我们刚才已经知道此文件是64位,我们把它拖入ida64即可。



可以看出,只要让dword_60106C的值等于1853186401就可以运行下面那个函数,即得到flag

3.pwn!

第一步:怎么完成?

db即define bytes,意思是定义一个字节,我们所需要修改的数值是下面的dword_60106C,故填充四个bytes的数据并覆盖dword_60106C为所需值即可。

第二步:正式写exp

以上就是我们写好的exp脚本,接下来就是运行啦!

第三步:运行exp!

可以看到得到flag~

2023-01-10 WP

0x00 T2 level_0

0x01 题目来源

题目来自攻防世界的引导模式pwn栏目第三题level_0

一道栈溢出的基础题目。

0x02 题解

1.分析文件

第一步:checksec 文件名

2.IDA反编译

第一步:ida静态分析



可见这是一个read函数,可以实现栈溢出。

第二步:发现后门



发现后门函数,还是ret2text'的打法

3.pwn!

第一步:注入多少数据?





可计算得到,需要覆盖(0x80+0x08)的数据

第二步:正式写exp

第三步:运行exp!



拿到shell

2023-01-11 WP

0x00 T3 CGfsb

有错误的地方欢迎指教!有不明白的也可以提问,欢迎大家一起讨论~

题目来源是攻防世界引导模式的第五题,CGfsb。

初探格式化字符串漏洞。

0x01 wp

第一步,checksec

除了没开随机地址什么都开了,32位

第二步,反编译+静态分析

可以看到需要输入两次东西,并且会打印出来,其中的printf(&s)就是格式化字符串漏洞。

这个漏洞,在于printf(&s),前面的fgets让你自己输入东西进入s以后,你就可以控制printf()里面的内容,达到查看内存和修改内存的目的。

(%p是打印地址)

比如你输入aaaa-%p,那么printf(&s)就相当于,

printf("aaaa-%p")

可是正常来写我们都知道,我们是这么写的:

printf("aaaa-%p", a) //就是说,在“……”之后,会有一个参数。

那么没有参数怎么办?直接从栈里面找,其实还是隐性的有后面的参数,只不过直接从栈中索引了。

查看内存使用%s、%c、%p之类的,写入内存使用%n或者%i$n,其中 i 代表一个变量。

其中这个 i 代表着往下索引第几个参数,然后%i$n就代表着向第 i 个参数写入成功打印的个数(比方说打印了‘aaaa’,那么就会写入4)。

如前面所说,直接从栈中索引,这个%i$n也是直接从栈往下索引参数,这么说太抽象,我们看例子。

可以看出他就是把下一个参数的内容作为地址打印出来了

进一步分析!

我们根据ida的伪代码分析到,需要把pwnme的内容修改为8,这样就能cat flag。那么我们要充分利用%i$n写入成功打印字数的功能,成功打印八个字数然后写入pwnme的地址。



这是pwnme的地址,因为没开随即地址,它不会被改变



我们通过输入“aaaa%p-%p……”这一串内容来确认我们第一次输入的前四个字节属于第几个参数。我们可以看到aaaa被转为ascii码被当作三十二位地址打印出来了,就是0x61616161。所以我们可以数一下,我们第一次输入的内容是在第十个参数。

也就是说,我们只需要输入四个字节,再输入pwnme的地址(占四个字节),总共八个字节,就会在pwnme写入8。我们可以开始写exp了。

第三步,写exp



aaaa是第十个参数,所以我们的地址是第十一个参数,所以写入%11$n

注意一开始还要输入一个东西,随便写一下就好。

最后,运行拿到flag

2023-01-12 WP

0x00 T4 easyasm

0x01 题目来源

题目来自hgame比赛week1的reverse,非常简单的汇编逆向,甚至连汇编知识都不怎么需要。

0x02 题解

1.看看txt

按照我的理解这个程序就是跳来跳去,最后就是对他需要的一个内容进行xor运算,其他代码可能是混淆之类的。所以只需要把下面加密的结果和0x33进行异或就可以获得flag。

2.解密

先试一下第一个元素异或的结果。

hgame的flag格式都是hgame{……}可以确定我们做题方向没有问题

随后构建完整的数组进行for循环异或就可以得到最终的flag。

0x00 T5 easy_overflow

0x01 题目来源

题目来自hgame的week1的pwn第二题。

比赛仍然进行,网址:https://hgame.vidar.club/contest/2

0x02 题解

1.分析文件

第一步:checksec 文件名

我们继续使用checksec看看这个文件的保护情况。

可见是64位的。

2.IDA反编译

第一步:拖入ida静态分析

我们刚才已经知道此文件是64位,我们把它拖入ida64即可。

第二步:跟进main函数

跟进后发现都是这些玩意,估计就是动态链接才能看出来是用什么函数。我们需要自己运行和动态分析一下。

3.动态分析

第一步:先运行

可见功能就是使用了read或者get函数之类的,然后就结束。我们可以进一步去gdb看看。

如果有read函数之类的,就可以实行栈溢出攻击,我们还需要确定栈的大小。

第二步:gdb动态分析

猜测后门就是system()函数,可以试试设断点显示地址。



我们可以看到基本对上了。

现在就差确定栈的大小。其中注意到这里运行了一个close函数,应该就是刚才那个函数上面的函数,这个函数会让shell无法正常回显。具体请看下面的参考文章。

参考文章

从0x……130开始存到0x……148ret,可知栈大小为(0x148-0x130)

3.exp



后门的地址如上。

运行完得到shell。

最后的小插曲

由于前面close()函数,不能直接获得flag。



经过欧阳学长的提示,找到了一个命令“sh”,不过也可以按照上述的参考文章进行cat flag。以下是两个解决方法。

week3

2023-01-19 WP

0x00 T1 [第五空间2019 决赛]PWN5

第三周提交wp辽。

题目来源是buuctf pwn的第7题,[第五空间2019 决赛]PWN5。

再探格式化字符串漏洞。

0x01 wp

第一步,checksec



还是除了没开随机地址什么都开了,32位

第一次看到这个题我还以为要用canary泄露什么的,然后觉得很麻烦就没做下去,结果发现是格式化字符串哈哈哈哈哈哈哈哈哈又有信心了。

第二步,反编译+静态分析

详细原理请看楼上初探格式化字符串,这次偏巩固所以就不细说原理了。



和上一个格式化字符串的题差不多,基本思路就是确定偏移量,用%n写入数据,并在最后输入写入的数据拿到权限。

进一步分析!

需要把数据写入这个地址。



偏移还是10.

第三步,写exp



写入地址长度,并用%n修改相应数据,32位数据是四个字节,故最后输入4拿到权限。

最后,运行拿到flag

2023-01-21 WP

0x00 T2 ciscn_2019_n_8

祝大家除夕快乐!

题目来源是buuctf pwn的第9题,ciscn_2019_n_8。

0x01 wp

第一步,checksec

非常可怕!32位,什么都开了,一开始还以为要寄了,结果发现其实并没有那么难

第二步,反编译+静态分析



可以看出利用的是格式化字符串的漏洞,需要我们修改var地址往下数第十四个,类似是数组的结构到var[13]为17,并且为LL就是long long int八个字节,,相当于64位的数据'\x11\x00\x00\x00\x00\x00\x00\x00'。

第三步,写exp

var数组可以看做是一个int型的数组,先用aaaa填充前面的数据,最后写入64位形式的17。

最后一步,运行拿到flag

2023-01-21 WP

0x00 T3 jarvisoj_level2

大家除夕快乐哇,最近打算就是跟进一下刷题量多点经验积累。

(misc真的…唉不说了,打了两场比赛都没什么产出,感觉很多靠经验,太缺乏了这方面)

给自己找的借口:都在做pwn还有学汇编(然后发现学的汇编好像没派上什么用场,只是了解了很多名词)

0x01 题目来源

题目来自buuctf pwn的第十题,一道简单的ret2sys,然而我居然弄错了bin/sh的地址…然后查了wp才做出来,我一开始甚至蠢到用ret2libc【…】

0x02 题解

1.checksec



32位,无canary和随机地址。

2.静态分析

#第一步,跟进可以发现存在read函数可以实现栈溢出。

第二步,计算出栈偏移量为0x88+0x04。

3.找到关键函数和字符串“/bin/sh”



俩地址都有了!写exp吧!

4.写exp,运行拿flag~



0x00 T4 easy_overflow

0x01 题目来源

题目来自buuctf pwn的第十一题,突然发现后面的题目比前面的简单??

利用ret2text。

0x02 题解

1.分析文件

第一步:checksec 文件名

我们用checksec看看这个文件的保护情况。



64位嗷

2.IDA反编译

第一步:拖入ida静态分析



此程序即一开始设定read函数接收数据的长度,然后就可以利用read实现栈溢出。

后门函数,地址为0x4006E6

第二步:看看栈的偏移量

可见偏移量为(0x10+0x08)

2.exp

#ret2text,并且设定接收数据为66长度。

运行得到flag

2023-01-22 WP

0x00 T5 get_started_3dsctf_2016

buuctf的pwn栏目的第十二题。

0x01 wp

第一步,checksec

很平常,32位

第二步,反编译+静态分析

#看main函数。
#发现有get函数,可以实现栈溢出。

#发现get_flag函数
#只要a1,a2参数分别等于相应的值就可以获得flag

#计算到返回地址的偏移量
#为0x38



#get_flag函数的地址
#exit函数的地址(返回到exit使得程序正常退出,得到回显。)

根据以上写exp即可获得flag。

比较需要注意的是,32位函数调用时是从栈里取参数,需要在调用的函数地址后面,填入返回地址、参数1、参数2……

第三步,写exp

最后一步,运行拿到flag

感谢wp:https://www.cnblogs.com/zhuangzhouQAQ/p/15036343.html

week4

2023-01-29 WP

0x00 T1 [OGeek2019]babyrop

第四周~进了华为冬令营,我还以为是线下的夏令营hhh。

题目来源是buuctf pwn的第13题,[OGeek2019]babyrop。

ret2libc,32位+一点点逆向

0x01 wp

第一步,checksec



32位

第二步,反编译+静态分析

#8-10:首先程序读取一个四字节的无符号数进入buf
#11: 将buf作为一个参数,传入804871F函数。如下

#11:函数参数以long int形式读入s
#12:调用函数read,v6的值为输入的字节数,方便下一行代码实现
#13:将最后一位设为0
#14:设置v1大小,为了绕过比较,strncmp第三个参数为比较的最大字符数,我们让v1=0
strlen截断于\0,所以我们让buf第一个字节为'\x00'即可。
函数返回值v5如下。

//返回到下面这个函数,可见
//如果要实现栈溢出只要他为最大的'/xff'

最后打ret2libc即可。

第三步,写exp



#注意这题给了so文件,从里面找偏移需要使用libc.sym['xxx'],
#字符串用ROPgadget找。(由于在线查查不准卡了很久)。
#泄漏的地址可以选择write,read都可以。

最后,运行拿到flag

0x00 T2 jarvisoj_level2_x64

0x01 wp

第一步,checksec

第二步,反编译+静态分析



#直接栈溢出,打ret2sys,64位
#以下为查偏移量和找寄存器,找字符串/bin/sh



偏移量为0x88

这里选择pop rdi; ret那个



/bin/sh地址

32位和64位调用函数方式不一样,这个做题多了熟悉就好了。一个是参数跟后面一个是用寄存器。

不过32位参数大于等于3也需要用寄存器的方式调用~

第三步,写exp

最后一步,运行拿到flag

0x00 T3 [HarekazeCTF2019]baby_rop

0x01 题目来源

buuctf pwn的第十五题。

0x02 题解

1.checksec



64位

2.静态分析

#用scanf读取字符串,直接栈溢出

有现成的system函数和'/bin/sh'字符串,ret2sys,64位

栈偏移直接看ida就好了,是0x18

4.写exp,运行拿flag~



flag呢?找找找……



在这儿~

0x00 T4 ciscn_2019_en_2

0x01 题目来源

题目来自buuctf pwn的第十六题,和前面某题目一模一样,简单说一下吧~

0x02 题解

1.分析文件

第一步:checksec 文件名

我们用checksec看看这个文件的保护情况。

64位

2.IDA反编译

第一步:拖入ida静态分析



首先填入1然后再在加密函数里进行栈溢出,
并且注意绕过strlen的判断所以get函数的s第一个要用\x00填充。

第二步:看看栈的偏移量

可见偏移量为(0x50+0x08)

2.exp

ret2libc 64位打法。

运行得到flag

0x00 T5 not_the_same_3dsctf_2016

buuctf的pwn栏目的第十七题。

0x01 wp

第一步,checksec

![在这里插入图片描述](https://img-blog.csdnimg.cn/c0b667fbd4c84849a3dad21aed20b5e8.png) 32位

第二步,反编译+静态分析

#看main函数。
#上来就有get函数,可以实现栈溢出。

#发现get_secret函数
#可见函数是,向&fl4g中写入flag。
#计算到返回地址的偏移量
#为0x38

并且这道题发现有mprotect函数,那么有两个打法。

第三步,写exp

第一个打法,用write函数将&fl4g打印出来



0x80489A0就是get_secret函数的地址

运行结果直接得到flag。

第二个打法,用mprotect函数

这个方法就是直接改写一个内存页的权限,然后打ret2shellcode



需要用到三个寄存器,选择这个

修改这个内存页,由于修改权限是要整个内存页(4k大小,即0x1000),所以从这里开始。

> 32位,三个参数用寄存器。先溢出到mprotect,
> 返回地址,
> 填入三个参数,
> 然后返回到read,写入shellcode。分别构成了:
> mprotect(_4kadd, 0x100, 0x7)
> //其中0x7代表rwx,可读可写可执行
> //注意第二个参数需要是页大小的倍数(0x1000的倍数)
> //虽然这次写了0x100但是最好还是写0x1000及其倍数
后续:欧阳学长查了源码,写0x100是会被直接改为0x1000对齐的

运行结果:

week5

2023-02-04 WP

0x00 T1 others_shellcode

第五周提交wp辽,祝福大家元宵快乐,幸福安康。

题目来源是buuctf pwn的第五行第三个题,others_shellcode。

一道送分题,但是需要好好理解题意。

0x01 wp

第一步,checksec

虽然全开保护了,但是不用慌张!

第二步,反编译+静态分析

跟进看一下函数"getshell"如下。

不明白,我们具体看看汇编如下,具体注释如下,文章不赘述。

第三步,写exp

从上述得知,"getshell()"直接运行了execve("/bin/sh",0,0)
#如注释有问题欢迎指出!!
故直接nc获得flag。
之所以叫"others_shellcode",大概意思是之前用的都是
system("/bin/sh")
#所以这次想给我们看点不一样的吧~

nc拿到flag

题目看似简单但是暗藏玄机,不能轻易错过哦~

0x00 T2 ciscn_2019_ne_5

是下一题。

0x01 wp

第一步,checksec

第二步,反编译+静态分析

只看这里还不明白,看看别的函数。

发现"Addlog(int a1)"函数可以录入128字节的数据,而在"GetFlag(char *src)"中,
将src作为指针传入字符串,且实行'strcpy'将src复制到dest,
dest长度只有48,而可以复制128过去,则可以在这里实现溢出。

我们看到有现成的"system"函数,所以在需要"/bin/sh"就行了。
根据wp,只有"sh",也是可以的!(新知识点!)
所以构造
system("sh")
即可!

第三步,写exp

exp思路便是,先输入正确的密码,然后传入1,运行'Addlog'函数,再传入我们的payload,
最后运行'getflag'函数,拿到权限。

最后一步,运行拿到flag

0x00 T3 铁人三项(第五赛区)_2018_rop

下一题

0x01 题解

1.checksec

这次直接运行看看,就是read函数应该吗,然后打印个你好世界。

2.静态分析



果然,这题没后门函数,有read,那就泄露read打ret2libc即可。

4.写exp并且运行拿flag



先泄露一下地址。ok,去查好地址写好 exp如下。



拿flag。



这题就是很传统的ret2libc了,64位的。

0x00 T4 bjdctf_2020_babyrop

0x01 题目来源

下一题捏。

0x02 题解

1.分析文件

第一步:checksec 文件名

用checksec看看这个文件的保护情况。

64位,无pie和canary,安心

2.IDA反编译

第一步:拖入ida静态分析

有点中二但是我喜欢。和上一题差不多看起来。

第二步:看看栈的偏移量

可见偏移量为(0x20+0x08)
那还等啥,直接ret2libc!

2.exp



泄露得到地址。

但是由于puts 690的libc太过古早,搜索半天没搜到,libcsearcher又用不了,卡了很久,最后被群里一位大哥解救,远程感谢一下Byron~

我当时找了下puts 690的libc搜到了这个wp。

并且在网站都找不到这个libc,于是Byron为我提供了下面这些信息。



这是他给我提供的,但是这个libcbase引起了我的兴趣。



最后问题解决,拿到flag。

因为这个卡了一晚上也是够蠢的……

0x00 T5 bjdctf_2020_babystack2

依然是下一题!

0x01 wp

第一步,checksec

第二步,反编译+静态分析

看到if(xxxx>xxxx)基本可以知道是整数溢出了,且下面有read,
显然此题思路就是绕过if判断并且read足够多的数据达成一处运行后门。

后门函数



关于整数溢出,就是指大到最大以后他会变到最小的数(这和二进制溢出有关系,比如1111最大了,1111+1就会变成10000,但是人家只会存后四位,所以右边为了0000,不管多大字节的都同理)

由于输入时是signed,使用时是unsigned,这个漏洞就可以利用了。因为signed的负数(如1111是-1),在unsigned是很大的数字(如1111是15),字节越多越大。

第三步,写exp

由于发现存放的int是四个字节,定为long int,故传入singed最大值加一,达到整数溢出的效果,随后即是ret2text



拿下flag。

尾声:别走!一点小喜悦

刚才提到'libc-database'吸引到了我,于是安装了一波!方法如下,大家一起看看
1. git clone https://github.com/niklasb/libc-database
2. cd libc-database
3. ./get

使用方法:



参考原文点击这里!

安装好了,我们试试看吧!





不过原本那个查不到,可能真的太老了,没办法啦~

格式化字符串那里要改成printf("aaaa-%p",&a)

N1nEmAn-2023集训wp的更多相关文章

  1. 2023牛客寒假算法基础集训营1 ACDEFGHKLM

    比赛链接 A 题解 知识点:模拟. 显然. (用char输入到一半直接给答案跳出,WA了两小时,无话可说. 时间复杂度 \(O(1)\) 空间复杂度 \(O(1)\) 代码 #include < ...

  2. 2023牛客寒假算法基础集训营2 ABCDEFHJKL

    比赛链接 A 题解 知识点:数学. 用 \(n\) 减去区间1的端点得到匹配的一个区间,求一下与区间2的交集. 一个小公式,两区间 \([L_1,R_1]\) 和 \([L_2,R_2]\) 的交集长 ...

  3. 2023牛客寒假算法基础集训营3 A-I+K

    A 题解 知识点:贪心. 把所有正偶数除成奇数,即可. (人傻了没加 \(x>0\) WA2 时间复杂度 \(O(n)\) 空间复杂度 \(O(1)\) 代码 #include <bits ...

  4. 2023牛客寒假算法基础集训营4 A-H+JLM

    比赛链接 A 题解 知识点:数学. 算一下发现 \(3\) 最好,\(2,4\) 并列, \(4\) 以后递减.于是,特判 \(3\) ,其他取最小值. (众所周知, \(e\) 进制最好qwq. 时 ...

  5. 2023牛客寒假算法基础集训营5 A-L

    比赛链接 A 题解 知识点:前缀和,二分. 找到小于等于 \(x\) 的最后一个物品,往前取 \(k\) 个即可,用前缀和查询. 时间复杂度 \(O(n + q\log n)\) 空间复杂度 \(O( ...

  6. 2023牛客寒假算法基础集训营6 A-L

    比赛链接 A 题解 知识点:模拟. 如题. 代码 #include <bits/stdc++.h> using namespace std; using ll = long long; i ...

  7. HGAME 2023 WP week1

    WEEK1 web Classic Childhood Game 一眼顶真,直接翻js文件,在Events.js中找到mota(),猜测是获取flag,var a = ['\x59\x55\x64\x ...

  8. 逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])

    常用技能:http://www.cnblogs.com/dunitian/p/4822808.html#skill 逆天博客:http://dnt.dkil.net 逆天通用水印扩展篇~新增剪贴板系列 ...

  9. QDEZ集训笔记【更新中】

    这是一个绝妙的比喻,如果青岛二中的台阶上每级站一只平度一中的猫,差不多站满了吧 自己的理解 [2016-12-31] [主席树] http://www.cnblogs.com/candy99/p/61 ...

  10. wp已死,metro是罪魁祸首!

    1.这篇文章肯定会有类似这样的评论:“我就是喜欢wp,我就是喜欢metro,我就是软粉“等类似的信仰论者发表的评论. 2.2014年我写过一篇文章,windows phone如何才能在中国翻身? 我现 ...

随机推荐

  1. 2020-11-24:n个物品每个物品都有一定价值,分给2个人,怎么分两个人的价值差最小?

    福哥答案2020-11-24: 背包问题:背包容量是SUM/2. 每个物体的体积是数的大小,然后尽可能的装满背包. golang代码如下: package main import ( "fm ...

  2. 2022-01-06:N个结点之间,表世界存在双向通行的道路,里世界存在双向通行的传送门. 若走表世界的道路,花费一分钟. 若走里世界的传送门,不花费时间,但是接下来一分钟不能走传送门. 输入: T为

    2022-01-06:N个结点之间,表世界存在双向通行的道路,里世界存在双向通行的传送门. 若走表世界的道路,花费一分钟. 若走里世界的传送门,不花费时间,但是接下来一分钟不能走传送门. 输入: T为 ...

  3. 2021-12-03:石子游戏 IV。Alice 和 Bob 两个人轮流玩一个游戏,Alice 先手。 一开始,有 n 个石子堆在一起。每个人轮流操作,正在操作的玩家可以从石子堆里拿走 任意 非零 平

    2021-12-03:石子游戏 IV.Alice 和 Bob 两个人轮流玩一个游戏,Alice 先手. 一开始,有 n 个石子堆在一起.每个人轮流操作,正在操作的玩家可以从石子堆里拿走 任意 非零 平 ...

  4. 2021-08-07:与数组中元素的最大异或值。给你一个由非负整数组成的数组 nums 。另有一个查询数组 queries ,其中 queries[i] = [xi, mi] 。第 i 个查询的答案是

    2021-08-07:与数组中元素的最大异或值.给你一个由非负整数组成的数组 nums .另有一个查询数组 queries ,其中 queries[i] = [xi, mi] .第 i 个查询的答案是 ...

  5. LVDS_33 support

    在HR bank/HD bank中,支持LVDS的bank使用VCCO 3.3v供电,仅仅需要对端给过来的信号,满足标准的LVDS差模电压/共模电压的标准即可.如下截图:  限制: 仅能作为input ...

  6. 代码随想录算法训练营Day21 二叉树

    代码随想录算法训练营 代码随想录算法训练营Day21 二叉树| 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先 530.二叉搜索树的最小绝对差 题目链接:5 ...

  7. JVM系统参数

    JVM(Java虚拟机)是Java程序的运行环境,它可以通过一些系统参数进行配置和优化.以下是一些常用的JVM系统参数: 1. -Xmx: 用于设置JVM堆的最大内存大小.例如,-Xmx1g表示将堆的 ...

  8. 使用 coding.net 发布你的个人博客

    微信文章不允许外链,本文章的静态示例站点,可在文章左下角 "阅读原文" 进行预览. 很多人喜欢在 github pages / gitee pages 发布自己的个人博客,前者由于 ...

  9. 插件化工程R文件瘦身技术方案 | 京东云技术团队

    随着业务的发展及版本迭代,客户端工程中不断增加新的业务逻辑.引入新的资源,随之而来的问题就是安装包体积变大,前期各个业务模块通过无用资源删减.大图压缩或转上云.AB实验业务逻辑下线或其他手段在降低包体 ...

  10. 前端Vue仿滴滴打车百度地图定位查找附近出租车或门店信息(更新版)

    前端vue仿滴滴打车百度地图定位查找附近出租车或门店信息, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12982 效果图如下 ...