周记4-SQL基础,pop链,php变量绑定
SQL注入基础漏洞何为sql注入?简单来说就是攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作
例如对于一些安全性较低的登录页面,因为这些用户的数据都是存储在数据库中,那么就可以进行SQL注入来查询敏感信息或者做更多恶意操作
mysql数据库结构mysql数据库5.0以上版本有一个自带的数据库叫做information_schema,该数据库下面有两个表一个是tables和columns。tables这个表的table_name字段下面是所有数据库存在的表名。table_schema字段下是所有表名对应的数据库名。columns这个表的colum_name字段下是所有数据库存在的字段名。columns_schema字段下是所有表名对应的数据库。了解这些对于我们之后去查询数据有很大帮助。
mysql数据库常用默认的端口为3306
SQL语句在进行SQL注入之前,我们肯定要学习一下SQL语句,接下来介绍一些常用的语句和基本语法
12345678910111213141516171819202122232425262728293031323334353637启动运行mysql:在命 ...
培训笔记4
数组定义
命名相同类型的有限变量的集合,该名称是一个数组名称。
组成数组的变量称为数组的元素。
声明和访问声明定义一个数组时所需的基本语法
int scores[5]
初始化int scores[5] = {90, 85, 80, 75, 70};
初始化部分元素
int scores[5] = {90, 85};
初始化第一,第二元素,其余为0
让编译器自动推断大小
int scores[] = {90, 85, 80, 75, 70};
使用索引访问元素printf(“%d”, scores[0]); // 输出90
pfor(int i=0;i<=n;i++) printf(“%d”, scores[i]); // 输出90
注意点:数组的索引从0开始,超出数组范围的索引可能导致未定义的行为
用取模来实现下标循环
多维数组多维数组就像是个表格,矩阵,有行和列
初始化和声明声明一个3x4的二维数组 int a [3] [4];
初始化 int a[3] [4] = { ...
培训笔记3
前言计算机要处理的数据(诸如数字,文字,符号,图形,音频,视频等)是以二进制的形式存放在内存中的,我们将八个比特(Bit)称为一个字节(Byte),并将字节作为最小的可操作单元
变量现实生活中我们会找一个小箱子来存放物品,一来显得不那么凌乱,二来方便以后找到。计算机也是这个道理,我们需要先在内存中找一块区域,规定用它来存放整数,并起一个好记的名字,方便以后查找。这块区域就是“小箱子”,我们可以把整数放进去了。 C语言中这样在内存中找一块区域:
1int a = 123;
int,它是 Integer 的简写,意思是整数。a 是我们给这块区域起的名字;当然也可以叫其他名字,例如 abc、mn123 等。 这个语句的意思是:在内存中找一块区域,命名为 a,用它来存放整数。
不过int a;仅仅是在内存中找了一块可以保存整数的区域,那么如何将 123、100、999 这样的数字放进去呢? C语言中这样向内存中放整数:=是一个新符号,它在数学中叫“等于号”,例如 1+2=3,但在C语言中,这个过程叫做赋值。赋值是指把数据放到内存的过程。 把上面的两个语句连起来:就把 1 ...
周记3-RCE,upload-labs,XSS-labs
rce-命令执行
漏洞一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。 如果,设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器。 现在很多的企业都开始实施自动化运维,大量的系统操作会通过”自动化运维平台”进行操作。在这种平台上往往会出现远程系统命令执行的漏洞。 远程代码执行 同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。
系统命令执行函数1.system() 将字符串作为OS命令执行,自带输出功能。2.passthru() 将字符串作为OS命令执行,不需要输出执行结果,且输出全部的内容。3.exec() 将字符串作为OS命令执行,需要输出执行结果,且它只会输出最后一行的内容。4.shell_exec() 将 ...
XSS-labs
XSS靶场我用的是线上XSS-labs:https://xssaq.com/yx/
一些知识点详见周记2的XSS部分:https://Hades-blog.github.io/2023/10/15/%E5%91%A8%E8%AE%B0-2023-10-15-%E5%91%A8%E8%AE%B02/
level 1查看网站源码,可以发现get传参name的值test插入了html里头,还回显了payload的长度
直接get传js代码
1<script>alert('1')</script>
level 2第一个test可以跟上次一样直接插入js即可,我们先试试看
1<script>alert('1')</script>
没成功,看一下源码
第一个test进行了html实体转义,但是第二个没有,我们只需要闭合掉前面的input和引号即可,构造payload
1"> <script>alert('1')</script> <&q ...
upload-labs
文件上传靶场一些知识点详见周记2的文件上传部分:https://Hades-blog.github.io/2023/10/15/%E5%91%A8%E8%AE%B0-2023-10-15-%E5%91%A8%E8%AE%B02/
Pass-01第一题简单的前端验证,禁用js传shell或者改合法后缀抓包
Pass-02绕MIME检查,抓包改请求头的Content-Type部分为合法(例如image/png)格式绕过
Pass-03黑名单过滤不全,可以改后缀为能生效但能绕过检测的不常用后缀,如.php3,.php4等
Pass-04没过滤.htaccess后缀,那么可以传此文件使shell图片在后台生效
Pass-05user.ini绕过,上传此文件并上传shell图片,使shell包含进后台自带的php文件中
Pass-06没过滤大小写,可以改后缀为.pHP成功绕过
Pass-07后端检测没有去掉首尾空格,于是上传 shell.php+空格
那么这样的后缀就能绕过检测
Pass-08源码中没有过滤 .
上传时文件名为shell.php.,绕过对后缀的检查
Pass-09源码中 ...