lyqiu2022寒假进阶记录
0.simple_php
【原理】PHP弱类型比较
1、php中有两种比较符号:==和===
===会同时比较字符串的值和类型
==会把字符串转成相同的类型,进行比较,属于弱类型比较
2、弱类型比较总结:
(1)字符串和数字比较
var_dump('a' == 0); //bool(true)
var_dump('1a' == 1); //bool(true)
var_dump('12a' == 1); //bool(false)
==会把字符串转成相同的类型,在这里会把字符串转成数字。
第一个'a'转成0,相等为true;
第二个'1a'转成1(字符串以数字开头,转成这个字符串),相等为true;
第三个同理,转成12,不等为false;
(2)bool ture和任意比较
var_dump(True == 0); //bool(false)
var_dump(True == 'False'); //bool(true)
var_dump(True == 2); //bool(true)
==会把字符串转成相同的类型,在这里会把字符串转成数字。
bool 1和任何比较都相等,除了0和false ,因此认为0为false。(即除了0为false,其他字符串为ture)
第一个ture和false不等;
第二个字符串为ture,相等;
第三个同理;
(3)hash值和字符串“0”比较
$str1 = "a";
echo md5($str1); //0cc175b9c0f1b6a831c399e269772661
var_dump(md5($str1) == '0'); //bool(false)
---------------------------------------------------------
$str2 = "s224534898e";
echo md5($str2); //0e420233178946742799316739797882
var_dump(md5($str2) == '0'); //bool(true)
---------------------------------------------------------
$str3 = 'a1b2edaced';
echo md5($str3); //0e45ea817f33691a3dd1f46af81166c4bool
var_dump(md5($str3) == '0'); //bool(false)
---------------------------------------------------------
规则:只要以0e为开头,后面都是数字的都和'0'相等
第一个不是以0e为开头,false;
第二个符合,ture;
第三个后面不是都是数字,false;
(4)strcmp()
strcmp(s1,s2)
规则:
当s1<s2时,返回为负数 注意不一定是-1,测试结果是比较字符串长度
当s1==s2时,返回值= 0
当s1>s2时,返回正数 注意不一定是1,测试结果是比较字符串长度
如果两个字符串不同等,但是字符串长度相同,就比较从哪一位开始不同的,然后比较那一位的大小。
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
"A"<"B" "a">"A" "computer">"compare"
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数,如果出现了其它参数,则会retrun null,有些题目就是利用这一点来进行和0的完成比较。
【题目】

由题得我们要得到flag,则要满足$a==0 并且$a存在,且$b不是单纯的数字并且$b>1234。
那么我就可以设a为任意字符串(如abc) ,b为1235a,就可以得到flag了。
1.webshell
【原理】
1、webshell是什么
理解 webshell 我们可以从字面上去理解,将其拆分成 web 和 shell 来分别进行理解,web 在百度百科的解释如下:
web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和 HTTP 的、全球性的、动态交互的、跨平台的分布式图形信息系统。 是建立在 Internet 上的一种网络服务,为浏览者在 Internet 上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将 Internet 上的信息节点组织成一个互为关联的网状结构。
shell 是什么呢?百度百科的解释如下:
在计算机科学中,Shell 俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于 DOS 下的command.com 和后来的 cmd.exe。 它接收用户命令,然后调用相应的应用程序。
对于 shell 的理解,我们也可以理解为一个接口,用来管理某些应用程序。
webshell 就是两者的集合,合起来的意思可以理解为 web 应用管理工具,正常情况下,运维人员可以通过 webshell 针对 web 服务器进行日常的运维管理以及系统上线更新等,那么攻击者也可以通过 webshell 来管理 web 应用服务器。
两者在使用上并没有太多区别,但是在叫法上可能就不大一样了,管理员使用可以叫服务器管理工具,而在攻击者手里就可以叫做后门程序了。
2、webshell 常见分类
在做 web 渗透的时候,经常会用到 webshell,从以前的小马拉大马时代到现在的一句话木马,一共可以分为三类:小马、大马和一句话木马,下面对于这些名词做一下简单的解释。
小马拉大马
在以前菜刀没有出现的时候,我们想要获取 webshell 的时候,通常都是直接上传一个 web 木马并且直接用这个木马进行管理,由于这种大型木马的体量比较大,上传过程中容易被检测且不方便进行上传绕过测试,所以大家就想了一个办法,先上传一个体量小,功能少的小型木马然后再通过小马的简单的上传或者文件修改等单个功能进行大马的上传,这就是当年的小马拉大马的由来。
小马的功能通常是围绕文件管理的功能,比较简单,如:文件上传、文件修改、新建文件等,都是围绕方便上传一个体量大的木马来做的。
一句话木马
自从菜刀出现之后,渐渐的一句话木马成为了主流,体量小,还有一个界面版的客户端进行管理操作,极大的方便的大家对于 web 服务器的管理,随后由于菜刀不再更新,慢慢的出现了很多类似的变种,像:c刀,蚁剑,菜刀,Hatchet,xise,QuasiBot,WeBaCoo,Weevely、k8飞刀等,其核心功能包含文件管理、命令执行其实就够用了。
3、学会hackbar
------------恢复内容结束------------
------------恢复内容开始------------
0.simple_php
【原理】PHP弱类型比较
1、php中有两种比较符号:==和===
===会同时比较字符串的值和类型
==会把字符串转成相同的类型,进行比较,属于弱类型比较
2、弱类型比较总结:
(1)字符串和数字比较
var_dump('a' == 0); //bool(true)
var_dump('1a' == 1); //bool(true)
var_dump('12a' == 1); //bool(false)
==会把字符串转成相同的类型,在这里会把字符串转成数字。
第一个'a'转成0,相等为true;
第二个'1a'转成1(字符串以数字开头,转成这个字符串),相等为true;
第三个同理,转成12,不等为false;
(2)bool ture和任意比较
var_dump(True == 0); //bool(false)
var_dump(True == 'False'); //bool(true)
var_dump(True == 2); //bool(true)
==会把字符串转成相同的类型,在这里会把字符串转成数字。
bool 1和任何比较都相等,除了0和false ,因此认为0为false。(即除了0为false,其他字符串为ture)
第一个ture和false不等;
第二个字符串为ture,相等;
第三个同理;
(3)hash值和字符串“0”比较
$str1 = "a";
echo md5($str1); //0cc175b9c0f1b6a831c399e269772661
var_dump(md5($str1) == '0'); //bool(false)
---------------------------------------------------------
$str2 = "s224534898e";
echo md5($str2); //0e420233178946742799316739797882
var_dump(md5($str2) == '0'); //bool(true)
---------------------------------------------------------
$str3 = 'a1b2edaced';
echo md5($str3); //0e45ea817f33691a3dd1f46af81166c4bool
var_dump(md5($str3) == '0'); //bool(false)
---------------------------------------------------------
规则:只要以0e为开头,后面都是数字的都和'0'相等
第一个不是以0e为开头,false;
第二个符合,ture;
第三个后面不是都是数字,false;
(4)strcmp()
strcmp(s1,s2)
规则:
当s1<s2时,返回为负数 注意不一定是-1,测试结果是比较字符串长度
当s1==s2时,返回值= 0
当s1>s2时,返回正数 注意不一定是1,测试结果是比较字符串长度
如果两个字符串不同等,但是字符串长度相同,就比较从哪一位开始不同的,然后比较那一位的大小。
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
"A"<"B" "a">"A" "computer">"compare"
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数,如果出现了其它参数,则会retrun null,有些题目就是利用这一点来进行和0的完成比较。
【题目】

由题得我们要得到flag,则要满足$a==0 并且$a存在,且$b不是单纯的数字并且$b>1234。
那么我就可以设a为任意字符串(如abc) ,b为1235a,就可以得到flag了。
1.webshell
【原理】
1、webshell是什么
理解 webshell 我们可以从字面上去理解,将其拆分成 web 和 shell 来分别进行理解,web 在百度百科的解释如下:
web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和 HTTP 的、全球性的、动态交互的、跨平台的分布式图形信息系统。 是建立在 Internet 上的一种网络服务,为浏览者在 Internet 上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将 Internet 上的信息节点组织成一个互为关联的网状结构。
shell 是什么呢?百度百科的解释如下:
在计算机科学中,Shell 俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于 DOS 下的command.com 和后来的 cmd.exe。 它接收用户命令,然后调用相应的应用程序。
对于 shell 的理解,我们也可以理解为一个接口,用来管理某些应用程序。
webshell 就是两者的集合,合起来的意思可以理解为 web 应用管理工具,正常情况下,运维人员可以通过 webshell 针对 web 服务器进行日常的运维管理以及系统上线更新等,那么攻击者也可以通过 webshell 来管理 web 应用服务器。
两者在使用上并没有太多区别,但是在叫法上可能就不大一样了,管理员使用可以叫服务器管理工具,而在攻击者手里就可以叫做后门程序了。
2、webshell 常见分类
在做 web 渗透的时候,经常会用到 webshell,从以前的小马拉大马时代到现在的一句话木马,一共可以分为三类:小马、大马和一句话木马,下面对于这些名词做一下简单的解释。
小马拉大马
在以前菜刀没有出现的时候,我们想要获取 webshell 的时候,通常都是直接上传一个 web 木马并且直接用这个木马进行管理,由于这种大型木马的体量比较大,上传过程中容易被检测且不方便进行上传绕过测试,所以大家就想了一个办法,先上传一个体量小,功能少的小型木马然后再通过小马的简单的上传或者文件修改等单个功能进行大马的上传,这就是当年的小马拉大马的由来。
小马的功能通常是围绕文件管理的功能,比较简单,如:文件上传、文件修改、新建文件等,都是围绕方便上传一个体量大的木马来做的。
一句话木马
自从菜刀出现之后,渐渐的一句话木马成为了主流,体量小,还有一个界面版的客户端进行管理操作,极大的方便的大家对于 web 服务器的管理,随后由于菜刀不再更新,慢慢的出现了很多类似的变种,像:c刀,蚁剑,菜刀,Hatchet,xise,QuasiBot,WeBaCoo,Weevely、k8飞刀等,其核心功能包含文件管理、命令执行其实就够用了。
3、学会hackbar

浙公网安备 33010602011771号