我愿称之为最容易上手的编程语言——Yaklang(I)

简介: 我愿称之为最容易上手的编程语言——Yaklang(I)

🍀本人简介:


吉师大一最爱逃课的网安混子、
华为云享专家、阿里云专家博主、腾讯云自媒体分享计划博主、
华为MindSpore优秀开发者、迷雾安全团队核心成员,CSDN2022年运维与安全领域第15名


🍂做你想做的,错了算我的,不会要研究


你就不能百度一下吗?
https://www.baidu.com
你就不能Google一下吗?
https://www.google.com
你就不能Bing一下吗?
https://www.bing.com
你就不能NAVER一下吗?
https://search.naver.com
你就不能DuckDuckGo一下吗?
https://duckduckgo.com
你就不能GitHub一下吗?
https://github.com
你就不能F搜一下吗?
https://fsofso.com
你就不能StackOverflow一下吗?
https://stackoverflow.com
你就不能哔哩哔哩一下吗?
https://search.bilibili.com
你就不能Yahoo一下吗?
https://hk.search.yahoo.com
你就不能Yandex一下吗?
https://yandex.com
你就不能维基百科一下吗?
https://zh.wikipedia.org
你就不能萌娘百科一下吗?
https://zh.moegirl.org.cn


前几天碰到一个需要绕过图片验证码的题,由于刷的双系统,缺失某些配置,一般的工具我是用不了了


求助寄师傅,被告知Python模块中有个dddd可以用来识别图片验证码


但如果想要在Yakit中使用,还需要编写一个Yakit的插件,于是我顺理成章地去学Yakit官方编程语言


Yaklang


我对这个语言的评价:


和Python一样方便,和HTML一样自由,和Golang一样高效


Hello Yaklang


输出语句

println("Hello\nYaklang")

采用println+双引号,换行符什么的也可以正常使用


或者可以这样

println(`Hello
Yaklang`)

在Yaklang中,使用反引号可以进行多行输出,但缺点是输出的语句中不能包含反引号


注释


关于Yakit中的注释,共有三种

# 号注释 # Comment
普通注释 // Comment
多行注释 /* Hello YakComment */


变量的定义


在Yaklang中,有很多种定义变量的方法


例如


1、可以使用Golang 风格,进行声明变量

 var abc = 123
var a,b = 1,2

2、强制创建变量

abc := 123

3、自动创建变量(类Python)

abc = 123
a,b = 1,2


数据类型


谈到了变量,那么就很难避开数据类型这个话题,Yaklang中的数据类型其实很简单


string 字符串类型,用以快速构建一个字符串

int 整数类型:在 64 位机中,int 和 int64 是一样的

float 浮点类型,用来定义和表示浮点数

byte 本质上等同于 uint8

undefined / nil 为定义的值,我们可以理解为空值

bool 只有 true 或 false

map,基本等同于 Python 中的 Dict(字典)

slice,基本等同于 Python 中的 List(列表)

channel,基本等同于 Golang 中的 Channel

var,任意类型,等同于 Golang 中的 interface{}


在实际编程中,我们若想返回数据类型,可使用dump()


基础字符串的使用


定义


定义字符串可以有两种方式


利用双引号/利用反引号


前者是基本所有语言通用


后者则是可以避免转义字符


字符声明


以下是官方给的示例

c = 'c'
println(c)
c = '\x20'
println(c)
/*
    99
    32
*/

可以看到当c等于字符串c时返回了ASCII值


设置为\x20时返回了32


那么这个\x20是个什么玩意

它是一个字符序列,由反斜杠“ \”,
字母x(或X)和以下1-2个十六进制数字组成.
 例如,“ \ x30”,“ \ x41”和“ \ X61”分别代表
字符“ 0”,“ A”和“ a”.
 因为字符'0','A'和'a'的ASCII码的
十六进制值分别为0x30、0x41和0x61.


字符串:字节序列(bytes)


如果我们想要快速创建一个原始字节,可以在将要输出的字符串前加b来进行声明

name = b"Hello World Hello Yaklang"
dump(name)

当然,该前缀也适合于反引号包裹的字符串

name = b`Hello 
World 
Hello 
Yaklang`
dump(name)


字符串:% 格式化语法


Yaklang中的格式化语法说实话有点像Python


例如

println("Hello %v" % "World")
/* Hello World */
println("Hello %v + %v" % ["World", "Yaklang"])
/* Hello World + Yaklang */
println("Hello %v" % "World")
/* Hello World */
println("Hello %v + %05d" % ["World", 4])
/* Hello World + 00004 */


此处注意


%v即为var类型,在该语言中指任意类型


模版字符串语法 f-string


该语法同前面的字节差不多,处理方式类似于JS就是在输出语句前加上f,即可以通过${var}来引用变量的值,这样的方式,可以快速把一个值注入到字符串中

a = "World"
name = "V1ll4n"
println(f`Hello ${a}, Hello ${name}`)
/*    
OUTPUT: 
    Hello World, Hello V1ll4n
*/
println(f`1+1 = ${1+1}`)//反引号
/* 
OUTPUT:
    1+1 = 2 
*/
println(f"1+1 = ${1+1}")//双引号
/* 
OUTPUT:
    1+1 = 2 
*/

在我们处理数据包时,即可通过该方式

var targetPath = "admin.php?id=1"//地址
var addr = "example.com:8080"//域名
var payload = codec.EncodeUrl("1'or''='1")//将拼接的SQL语句通过url编码
packet = f`GET /${targetPath} HTTP/1.1//模拟请求头
Host: ${addr}
key=value&key2=${payload}`即为上述S经编码后的SQL语句
/*
GET /admin.php?id=1 HTTP/1.1
Host: example.com:8080
key=value&key2=%31%27%6f%72%27%27%3d%27%31
*/


字符串:Fuzztag 快速执行 x-string


这个知识点也是比较重要的,我要是早知道就不会跟个憨批一样拿Python循环去生成字典了


直接把官方的引用过来


Fuzztag 是 Yak 一个特色功能,在生成数据包进行模糊测试领域有非常广泛的使用,并广受用户好评。


新版本的 Yak 中,我们为 fuzztag 新设计了x-string 使用 x 作为字符串声明的前缀,可以快速实现 fuzztag 的渲染,例如我们 x"{{int(1-10)}}" 可以生成 ["1", "2", "3" ... "10"] 的数据


那么在实战中,我们可以对需要爆破且指定范围的参数


例如pwd、vcode


进行模糊参数测试,下面简单举个例子

目录
相关文章
|
6月前
|
安全 Linux iOS开发
IDA Pro 9.3 正式版发布 - 强大的反汇编程序、反编译器和多功能调试器
IDA Pro 9.3 (macOS, Linux, Windows) - 强大的反汇编程序、反编译器和多功能调试器
12656 9
IDA Pro 9.3 正式版发布 - 强大的反汇编程序、反编译器和多功能调试器
|
2月前
|
SQL 运维 安全
网站遭遇SQL注入攻击?应急处置、漏洞修复与长效防御完整方案
本文详解SQL注入攻击的应急响应、漏洞溯源、彻底修复与长效防御四步法,涵盖WAF拦截、参数化查询、最小权限配置等核心措施,助开发者从根源杜绝SQL注入风险,构建纵深安全防护体系。(239字)
|
7月前
|
JSON API 网络架构
什么是API?API有哪些类型?
本文深入浅出地讲解API的概念、类型及应用。API即应用程序接口,是软件间通信的桥梁。文章从开放、内部、合作伙伴API等分类入手,解析REST、SOAP、GraphQL等技术类型,并探讨其在数据与功能调用中的作用,帮助读者全面理解现代数字服务的底层逻辑。
13785 10
|
11月前
|
存储 安全 前端开发
Web渗透-文件上传漏洞-上篇
文件上传漏洞常见于Web应用,因类型限制不严可致恶意文件执行。本文介绍前端检测、MIME类型、黑名单、.htaccess、空格、双写等多种绕过方式,并结合upload-labs靶场演示利用方法,提升安全防护认知。
3190 1
Web渗透-文件上传漏洞-上篇
|
安全 Cloud Native 数据中心
Windows Server 2016 中文版、英文版下载 (2025 年 7 月更新)
Windows Server 2016 中文版、英文版下载 (2025 年 7 月更新)
5856 1
Windows Server 2016 中文版、英文版下载 (2025 年 7 月更新)
|
11月前
|
人工智能 算法 开发者
2025年高教社杯E题——AI 辅助智能体测全国大学生数学建模(思路、代码、论文)
2025年高教社杯E题——AI 辅助智能体测全国大学生数学建模(思路、代码、论文)
889 1
|
数据安全/隐私保护
思科模拟器Cisco Packet Tracer 8.2.1注册、下载和安装教程(正确+详细)
本文详细总结了思科模拟器Cisco Packet Tracer 8.2.1注册、下载和安装教程(正确+详细),看这一篇就够啦~
59149 7
思科模拟器Cisco Packet Tracer 8.2.1注册、下载和安装教程(正确+详细)
|
Java
Burpsuite专业版安装(保姆级)教程
Burpsuite专业版安装(保姆级)教程
4882 0
|
Python
Python中使用`requests`库进行流式响应处理的技术详解
【4月更文挑战第12天】在Python的网络编程中,处理大文件或数据流时,一次性加载整个响应内容到内存中可能会导致内存不足的问题。为了解决这个问题,`requests`库提供了流式响应处理的功能,允许我们逐块读取响应内容,从而更有效地管理内存。本文将详细介绍如何在Python中使用`requests`库进行流式响应处理。
4734 2
|
JSON 安全 JavaScript
Web安全-JQuery框架XSS漏洞浅析
Web安全-JQuery框架XSS漏洞浅析
4189 3

热门文章

最新文章