Golang基础
Golang数据类型整型Go语言同时提供有符号和无符号的整数类型
有符号整型:int、int8、int64、int32、
无符号整型:uint、uint8、uint64、uint32、uint64、uintptr
int8、int16、int32 和 int64 四种大小截然不同的有符号整数类型,分别对应 8、16、32、64 bit(二进制位)大小的有符号整数,与此对应的是 uint8、uint16、uint32 和 uint64 四种无符号整数类型。
int 和 uint,它们分别对应特定 CPU 平台的字长(机器字大小),其中 int 表示有符号整数,应用最为广泛
Go语言中int类型变量的声明
1var 变量名 int;
浮点型Go语言支持两种浮点型数:
float32 : 范围约1.4 * 10[^-45 ] 到 3.4 * 10[^38]
float64 : 范围约4.9 * 10[^-324]到1.8 * 10[^308]
Go语言中float32 / float64变量的声明
12var 变量名 float32;var 变量名 float ...
SQL手法 - 异或注入
异或注入mySQL在做String类型与数字类型的比较时, 如果字符串前面是数字,转换时就是转换成前面的数字,然后再进行比较. 比如: '1aaa' ==> 1如果字符串前面不是数字, 转换时就将其变成0进行比较.比如: 'aaa' ==>0
结果是1, 表示true
结果是0, 表示false
如何进行异或?异或操作(^)是一种逻辑运算符,用于比较两个二进制位。在异或操作中,如果两个二进制位相同,则结果为0;如果两个二进制位不同,则结果为1。
123456789计算1 ^ 21 的二进制表示是 0001,2 的二进制表示是 0010。 0001 (1) 0010 (2) ------- 0011 (3)所以 1 ^ 2 = 3
什么是异或注入?异或注入说简单一点就是在构造where后面的判断条件时使用 ^(异或符号)来达到sql注入攻击的目的
一、 正常的查询语句及效果
二、拼接异或条件的查询语句
1.
2.
为什么会有这个结果呢?
对于图1
首先: 'Keli'会与0做异或运算,结果为0 ...
两个src案例
案例一**文前废话:**某天正在刷着**社区的帖子,欣赏着漂亮的小姐姐,突然间评论区的一条评论引起了我的注意,类似于下面这样
这种评论在html标签中代码格式是<a>这是文字</a>这样的同时评论区XSS漏洞的高发区,想着可能会有操作点
一、发布一个标题有js语句的贴子
二、复制这个帖子的分享连接到另一个帖子的评论区评论然后刷新,发现有弹窗
三、查看网页源码,js语句已经写入
修复建议
对帖子的主题进行严格的验证或过滤
将引用的数据进行编码处理
案例二废话:早就看那共享电车不爽了,10分钟收我1块!
一、配置好环境,对小程序进行抓包本来想测测支付漏洞的,测了半天没有任何结果。突然间发现旁边有一个上传头像的功能
这不就来了吗
二、抓包上传一个我也不认识的文件
嗯!?!上传成功了!文件名也没改
问: 为什么我这有做?
因为这样可以排查出是不是用的白名单
三、上传一个php文件
又上传成功了!
访问页面
啥也没有?
不对劲,10分得有15分不对劲!
四、上传一个图片马,后缀改成php
好好好!解析了,但是不知道为什么不显示php代码输出的内容!
...
浅学XXE
什么是XXE?XXE就是XML外部实体注入。当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。
什么是XML?XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
XML有什么特点
XML仅仅是纯文本,他不会做任何事情。
XML可以自己发明标签(允许定义自己的标签和文档结构)
XML 无所不在。XML 是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。
既然XML是纯文本为什么还会产生注入呢原本xml本身是没有任何作用,但是在PHP里有一个函数叫做simplexml_load_string,他的作用是把xml转化为对象。
PHP 中的simplexml_load_file()函数 ,用于加载 XML 文件并返回一个 SimpleXMLElement 对象,这样你就可以轻松地操作 XML 数据了。
XML与HTML的区别
XML被设计用来传输和存储 ...
正则表达式
正则表达式什么正则表达式?正则表达式又称规则表达式,在代码中常简写为regex、regexp或RE,正则表达式通常被用来检索、替换那些符合某个模式的文本。
正则表达式的用途
判断字符串是否符合某一规则(比如判断是否符合手机号、邮箱规则等等)
从一个字符串中找出符合规则的所有子字符串(比如取HTML标签名等等)
php中正则表达式常用相关函数是什么?
Preg_match_all(正则表达式、匹配字符串、匹配到的东西放入数组)该函数会返回匹配到的次数(可能是0),或者如果发生错误返回FALSE
preg_replace(正则表达式、替换成什么、匹配字符串)说该函数会返回替换后的结果
正则表达式的语法——字符(一)
数字:\d
非数字:\D
空白字符(空格、制表符、换页符等):\s
非空白字符:\S
单词字符(26个英文字母+数字+下划线):\w
非单词字符:\W
正则表达式的语法——字符(二)字符集合:[单个字符或字符区间],用于匹配集合内字符
比如
[a-z]表示a-z这26个小写字母
[0-9a-z]表示0-9这10个数字和a-z这26个小写字母
[123a-h]表示包含数字 ...
某大学的存储型XSS
一、信息收集从来就没有弱口令成功登陆过网站,就想着找找看有没有暴露初始密码的学校网站谷歌语法搜索site:*.sdu.edu.cn intext:默认密码找到一个暴露默认密码的学校网站
进入该学校的教材征订系统,需要用学号登录
然后在百度贴吧等社交平台收集学生学号信息,这里找到了一个15年的帖子暴露了许多学号的帖子
二、测试随机找一个幸运儿的学号进行登录
登录成功之后,对头像上传功能进行测试
上传图片马bp改成php文件,竟然显示上传成功了,当我以为能getshell时,发现被后台删了
用bp抓包时看到一个包里有文件保存路径,就突然间想到了zbs师傅打到的黑龙江某学校的XSS漏洞就对bp里面的路径改了一下
刷新页面有弹窗
再看前端代码
就这样人生中的第一个漏洞到手
三、修复建议
对图片路径得传参进行实体化编码
多设置一些逻辑判定
SSIT模板注入
ssti模板注入攻击SSIT模板注入攻击中文名称服务端模板注入漏洞,也直接称为模板注入。当用户输入数据以不安全的方式嵌入到模板中时,就会发生模板注入。
什么是模板引擎?模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的文档。
检测模板的方法
可利用类(不全)1234567大多数利用的是os._wrap_close这个类__builtins__,它里面有eval()它的payload是 ==>{{url_for.__globals__['__builtins__']['eval']("__import__('os').popen('ls').read()")}}{{"".__class__.__base__.__subclasses__()[132].__init__.__globals__[' ...
php反序列化
序列化直接将对象数据转化成字符串或者二进制内容。然后进行存储
反序列化将序列化之后的数据,重新转变为对象
对象在程序中运行时,他是内存中的一项数据。当程序运行结束之后,对象就会被回收,回收完,对象就没有了。
通过序列化将对象的状态,转变成一个具体的数据,保存到你的硬盘上
序列化过程,只保存了对象的数据。而对应的方法是没有保存的。
反序化漏洞当PHP应用程序接收到未经验证的用户输入,并将其传递给unserialize()函数时,就可能存在反序列化漏洞。攻击者可以通过精心构造的序列化数据来触发漏洞,从而在应用程序中执行任意代码或导致不良行为。
**简单来所就是:**通过控制 序列化之后的结果的值,实现控制程序运行时对象的变量的数据。从而实现攻击
攻击步骤
找到存在反序列化的传参点
找到存在高危操作的类 。将高危操作的类中的变量进行覆盖,从而实现危险函数的调用
魔术函数1234567891011121314151617181920212223242526__construct() 对象创建时被调用__destruct() 对象被销毁时调用__toString() 方法用于一个 ...
zkaq-代码执行
命令执行漏洞用户传入的参数,会被当成系统指令来执行,指令内容用户可控
命令执行的危险函数123456system() => 直接执行系统指令,并且会打印出我们的结果exec() => 会执行指令,但是显示结果不会直接输出,结果只保留最后一行shell_exec() => 会执行指令,但是显示结果不会直接输出,保留多行结果`` => shell_exec() passthru() => 等价system()popen()
浏览器特殊协议(查看网页源码) view-source:
exec()、shell_exec()等无回显代码,查看命令有无成功执行的技巧
123通过 > 符号,将结果输出到某个文件里面,结果覆盖保存 >> 将结果输出到某个文件里面,结果末尾追加 | 管道符,将前面的指令运行结果,当成后面指令的输入内容
没有回显时,怎么判断我们的指令有没有执行
dnslog.cn 通过dnslog将数据外带
将指令的结果输出到一个文本文件中,然后去访问这个文件
IBOS代码执行全局搜危险函数system() ...
java的学习日记
输出语句123System.out.println( "abc" );//先打印abc,再进行换行System. out.print( "abc" );//只打印abc,不换行System.out.println();//不打印任何数据,只做换行处理。
变量变量的定义格式
1数据类型 变量名 = 数据值;
demo
12345678910111213public class VariableDemo1{ //主入口 public static void main(String[] args){ //定义变量 //数据类型 变量名 = 数据值; //数据类型:限定了变量能存储的数据类型 //int(整数) double(小数) //数据值:真正存在变量中的数据 //等号:赋值. int a = 10; System.out.println(a);//10 }}
变量的使用方式
输入打印
12int a = 10;System.out.println(a);//10
参与计算
12 ...