自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 资源 (1)
  • 收藏
  • 关注

原创 PHP弱比较-字符数字比较

其中需要对函数 is_numeric() 进行解释,此函数会将数字,数字字符串,科学计数法的数字,十六进制的数字都认为是数字。而后面的数值比较是使用的弱比较,就是说会将不同类型的两个值转换成一个类型再进行比较,如果1的值是十六进制,则会将十六进制的值转换成十进制再进行比较。首先分析代码,代码开始对 GET 方式传递进来的参数1的值进行判断,当满足值为数字以及值与255相等时才执行到 if 中的代码,第二个 if 中判断参数1的值中是否有“255”这个字符串,如果没有就返回 flag。

2025-04-18 18:35:10 182 1

原创 PHP弱比较-SHA1

分析代码逻辑,首先通过isset()函数检查变量是否设置。如果已经设置,则使用sha1函数分别计算$_GET[‘name’]和$_GET[‘password’]。且二者不能原值相等,sha1值相等时可得到flag。由于代码在比较时使用了弱比较,则可以通过sha1无法计算数组的特性来进行绕过。docker-compose.yml文件或者docker tar原始文件。

2025-04-18 18:34:57 228 1

原创 PHP弱比较-MD5

分析代码逻辑,首先通过isset函数确认变量是否设置,且变量$_POST[‘name’]和$_POST[‘password’]的原值不能相同。但若$_POST[‘name’]和$_POST[‘password’]的MD5值相同则可得到flag。由于php代码在作比较时使用了弱比较,则可以使用MD5函数无法处理数组的特性来进行绕过。docker-compose.yml文件或者docker tar原始文件。访问题目后没有源代码信息,进行扫描目录。得到web.rar文件。打开压缩包后得到源代码。

2025-04-18 18:34:44 271 1

原创 PHP弱比较-SESSION

分析代码逻辑,提交的密码 pwd 和 session 中存储的pwd 的值相等即可出 flag。当 sessionid 为服务器中不存在的sessionid 时,获取的相应数据也为 NULL ,如果我们传入的 pwd 为 null ,则成功绕过比较。使用burpsuite截取数据包,修改 PHPSESSID 的值为空,并令 pwd 也为空。docker-compose.yml文件或者docker tar原始文件。信息搜集,右键查看网页源代码可查看到题目源码。

2025-04-18 18:34:31 236 1

原创 PHP弱比较-STRCMP

根据代码逻辑,需要比较$_POST[‘password’]和$password的值,而$password的值无从得知。但由于php代码在比较时使用了弱比较,并且strcmp传入的期望类型是字符串类型的数据,但是如果传入非字符串类型的数据的时候,这个函数将发生错误但却判定其相等。函数是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。(str1,str2),若str1=str2,则返回零;若str1>str2,则返回正数。

2025-04-18 18:34:19 165 1

原创 PHP弱比较-SHA1PHP弱比较-MD5(练习)PHP弱比较-MD5和SHA1(练习)

析代码逻辑,变量var1和var2的值不等,但MD5和哈希加密后的值需要相等,且这里用的是3个等号的强等,所以这里只有用数组绕过。因为MD5和sha1()对数组处理时返回值都为NULL,NULL===NULL,绕过。需要post一个值进去,联想到上一步给的提示,post一个test变量,赋值为sangfor,成功得到flag。只需要sha1($v1)==sha1($v2)时,即v1=v2便可输出flag。docker-compose.yml文件或者docker tar原始文件。访问flag.php。

2025-04-18 18:32:38 316 1

原创 PHP-科学计数法

条件二:p2不能为数字,但要想输出flag又必须为2,这里可以利用is_numeric()函数的特性,当它判断123、‘123’、0x123、‘0x123’等均为ture ,只有像123abc这种混合类型时为false,并且switch/case 作的是松散比较,所以令p2为2aaaa即可绕过。条件一:p1大于99999999,并且长度小于9.用科学计数法绕过,令p1等于1e8即可;docker-compose.yml文件或者docker tar原始文件。

2025-04-18 18:32:14 154 1

原创 文件包含-包含本地文件

根据代码逻辑,当输入php://字符串时会被替换为空。但由于存在1ndex.txt.bak文件可做文件包含输出flag。docker-compose.yml文件或者docker tar原始文件。访问题目后没有源码信息,右键点击查看网页源代码,发现存在提示信息。下载www.zip发现存在两个文件。

2025-04-18 18:31:34 283

原创 文件包含-php伪协议

docker-compose.yml文件或者docker tar原始文件。分析题目源代码,用户通过GET方式传入的字符会赋值给变量file。将获取的字符串base64解码即可得到flag。并且通过include函数处理了变量file。此时可考虑通过php伪协议读取文件。

2025-04-18 18:31:17 271

原创 文件包含-Phar

file=php://filter/read=convert.base64-encode/resource=upload 来读取源码.来新建一个目录,名字为blog,下面放一个index.php,里面是一个写shell的php代码。扫描web目录可得upload.php,include.php两个新文件。但是 include.php 限制了后缀只能是 .php,这里还不能截断。就会在当前工作目录下生成一个shell.php,通过蚁剑连接。再看upload.php,限制了只能上传图片。

2025-04-18 18:31:03 299

原创 PHP-json_decode

分析代码逻辑,传入一个变量message,并且是json类型的字符串,然后json_decode()函数将其解析成字符串,其中一个变量key的值和原码中的$key值相等,输出flag。再看$message->key==$key,这里是弱类型比较,想到了0’admin’这种方式,所以构造key={“key”:0}$key的值无法获取,只能考虑利用0=="string"这种形式绕过。分析代码逻辑,首先是===绕过,这里使用数组绕过,sha1作用于数组会返回NULL。

2025-03-25 19:59:22 392

原创 PHP-intval(1、2、3、4、5)

0也就是1得执行die,我们可以在前面加个空格,这样strpos()会返回1,所以我们把4476转换为8进制10574后,前面再加一个空格即可,payload为。分析代码逻辑首先第一个if判断有无参数num,第二个if正则匹配有没有数字,第三个if如果能为1的话,就可执行if里的语句。0x36d的十进制内容为877,我们需要字母在前来满足if条件的正则匹配来跳过if语句,接着再进行字符串的反转得到877a,接着intval()函数取整数部分得到877。分析代码逻辑,与上题的差别为进行了正则匹配过滤了字母。

2025-03-25 19:59:13 747

原创 PHP-ereg

分析代码,首先参数以post方式传入,再看条件,第一个if,ereg函数的作用是正则匹配,此处是要求传入的参数只能为单个或多个数字,结果才能为true,接下来与FALSE进行强比较,结果为FALSE,所以跳过执行下一个判断条件。因为ereg函数存在%00截断漏洞,就是说ereg会把%00当成是字符串的结尾,%00之后的字符串就不进行匹配了。②ereg函数存在NULL截断漏洞,导致正则过滤被绕过,可以用%00–截断,而strpos函数不存在,因此可以读取到后面的字符串,所以既可以用%00绕过。

2025-03-25 19:59:00 821

原创 PHP-array_search

分析代码逻辑,三个if条件很是苛刻,前两个if分别要求参数test传入的值必须是数组且数组内不能有“admin”,然后第三个条件就要求通过array_search(“admin”,$SXF)判断。而我们知道,array_search()与in_array()一样,会类型进行强制转换,那么当我们传入。array_search函数可以在数组内寻找某个键值,如果找到就返回键名,未找到就返回false。,最终等式成立返回匹配成功的数组元素的下标0,满足“===”,得到flag。

2025-03-25 19:58:47 288

原创 PHP-filter协议

首先定义了filter()方法对用户输入进行验证和过滤,不能含有正则表达式当中的字符串,并且过滤了上一题所使用的zlib协议。在第二个if条件判断中,如果传入的值不是正常存在的文件,并且通过filter()方法检验通过即可调用highlight_file打印源码。在第二个if条件判断中,如果传入的值不是正常存在的文件,并且通过filter()方法检验通过即可调用highlight_file打印源码。分析代码逻辑,首先定义了filter()方法对用户输入进行验证和过滤,不能含有正则表达式当中的字符串。

2025-03-25 19:58:32 255

原创 EasySQL

sleep函数再黑名单中因此不能直接使用,这里有一个考点:慢查询日志只会记录超过long_query_time时间的查询语句,因此要在写入webshell的sql语句中超过执行耗时命令,由于union和sleep都被过滤所以需要一定的绕过技巧,最简单的方式应该是修改long_query_time的值。fuzz黑名单,可发现select、单双引号、括号、分号、set、show、variables、等都没有过滤。接下来就是找flag了,查看用户发现有rainbow用户,查询慢查询日志的判定时间。

2025-03-25 19:58:19 275

原创 FakeWget

题目只有三个路由,一个输入点,容易判断考点是命令注入,因此需要先不断测试传入数据并刷新观察回显,来猜测后端与wget命令拼接逻辑和过滤逻辑,下面是三个比较典型的fuzz示例。这里特殊符号被替换成空格,\n绕过了检查wget的grep命令,并将/etc/passwd的文件内容发送到代理机上。接下来就是找flag文件,第三个路由(点击getflag)访问后看网站源码,可知flag文件名称是。绕过正则检查,只需要构造出空格且领用wget命令即可。这里fuzz出分号不可用,同理可得反引号,

2025-03-25 19:58:06 128

原创 Web-log

发现成功读取到日志文件(这里无法做目录遍历),根据日志内容可判断,该web是springboot,对应的jar包名为cb-0.0.1-SNAPSHOT.jar,尝试是否可以下载jar包。但ysoserial工具里的CommonsBeanutils链,除了依赖commons-beanutils以外,还依赖commons-collections,导致无法使用。提交参数仍然返回错误,但可以看到改文件名其实是一个日志文件名,那么他应该是按日分割的,代入今天的年月日。访问网站自动下载了一个log文件。

2025-03-25 19:57:37 192

原创 【无标题】ZIPZIP

此时 上传该test.zip 解压出里边的文件也是软连接 /var/www/html目录下 接下来的思路 就是想办法构造一个gethsell文件 让gethsell文件正好解压在/var/www/html 此时就可以getshell。当我们上传这个压缩包时 会覆盖上一个test目录 但是 test目录软链接指向/var/www/html 解压的时候会把cmd.php 放在/var/www/html 此时我们达到了getsehll的目的。当解压操作可以覆盖上一次解压文件就可以造成任意文件上传漏洞。

2025-03-25 19:57:23 292

原创 EasyWAF

结合以上两点信息,可以知道此web服务使用nodejs,并且waf数据保存在mysql中,而注册数据保存在postgresql中,同时可以利用mysql的max_allowed_packet特性绕过waf,并结合nodejs postgres包的RCE漏洞进行利用,给出如下exp.py。”,同时,发现设置了Cookie为node=bWF4X2FsbG93ZWRfcGFja2V0,base64解码后结果“max_allowed_packet”。IP record!远程服务器监听9999端口,获得flag。

2025-03-25 19:56:48 163

原创 信息搜集-XFF

访问题目后,可知需要源地址为10.0.10.x的ip地址才能访问。而X-Forwarded-For字段能实现ip的伪造。通过burp抓包后,在http请求头中添加X-Forwarded-For字段,值为10.0.10.1-255。docker-compose.yml文件或者docker tar原始文件。

2025-03-25 19:56:21 169

原创 信息搜集-Banner信息搜集

docker-compose.yml文件或者docker tar原始文件。F12打开控制台,在Network中查看响应包。

2025-02-27 22:30:05 141

原创 PHP-zlib协议

分析代码逻辑,与上一题相同。首先定义了filter()方法对用户输入进行验证和过滤,不能含有正则表达式当中的字符串,并且过滤了上一题所使用的filter。在第二个if条件判断中,如果传入的值不是正常存在的文件,并且通过filter()方法检验通过即可调用highlight_file打印源码。docker-compose.yml文件或者docker tar原始文件。可以使用其他协议进行绕过,例如zlib协议。

2025-02-27 22:29:35 265

原创 有回显XXE

关键行#1,存在file_get_contents()函数和php://input伪协议。docker-compose.yml文件或者docker tar原始文件。docker-compose.yml文件或者docker tar原始文件。4、利用xml构造外部实体,通过Burp传入,读取flag.php文件。利用xml构造外部实体,通过POST传入,读取passwd文件。3、利用xml构造实体,通过Burp传入,验证邮件字段回显。尝试访问flag.php文件,文件存在。5、读取flag.php文件。

2025-02-27 22:29:25 294

原创 无回显xxe利用

evil.txt的参数实体%file会将读取的flag文件base64编码带入到http://192.168.19.111:81/test.php?,去访问本地的test.php文件,如下图所示。在vps上放置两个文件,若没有vps,也可使用操作机使用Python2或者Python3搭建Web服务,靶机可访问即可。发送两次请求,第一次请求,使用参数实体读取文件,第二次请求,将读取文件的参数实体附带在对外请求中。访问flag.php状态码返回200,证明flag.php文件存在。在目录下放置两个文件。

2025-02-27 22:29:13 323

原创 PHP内置类利用

上述代码中存在3个用户可控参数,$classname、$param、$param2。在代码中不存在autoload函数,但#1行,存在spl_autoload_register函数,其作用和autoload函数类似。通过搜索发现f1111ag.php文件,下一步使用SimpleXMLElement类读取f1111ag.php文件。如上图所示,如果检查的类不存在,那么class_exists()函数就会去调用__autoload函数。也就是说,我们可以实例化PHP的任意内置类。

2025-02-27 22:29:02 294

原创 文件上传-NTFS文件流

验证Windows操作系统还是Linux操作系统可以通过改变url地址的大小写加以区分,Windows操作系统大小写不敏感,Linxu操作系统大小写敏感;当验证后端代码属于黑名单验证时,由于Windows和Linux文件系统有较大的差异,下一步需要测试服务器的操作系统是Windows还是Linux;如果文件名为xxx.xxx的文件上传成功,则证明后端验证为黑名单检测,一般情况下,黑名单验证仅不允许如.php等文件后缀;通过回显,可以判断,后端代码在检测文件后缀的同时,同时检测了文件头需符合图片内容标准;

2025-02-27 22:28:49 326

原创 文件上传-PHAR

运行 1.php。即可得到 phartest.zip。将 phartest.zip 上传,并且通过 burp 抓包,将文件类型改为image/jpeg然后上传即可。这里去包含了通过GET方式传递的 mod 和 action 字符串拼接后的文件。docker-compose.yml文件或者docker tar原始文件。这里可以使用 phar 协议来包含文件。将以下内容写入到1文件中。首先右键查看网页源代码,发现有代码提示。访问文件路径执行1文件中的php代码。稍作修改命令即可获取flag。

2025-02-27 22:28:35 190

原创 文件上传-图片马(训练题1)

分析题目,与上一题目相同,需要使用到文件包含,那么可以进行制作、上传图片马获取服务器权限。docker-compose.yml文件或者docker tar原始文件。尝试制作三种形式的图片马进行上传并获取服务器权限。

2025-02-27 22:28:11 194

原创 文件上传-图片马(训练题2)

通过url可知,upload目录和include.php文件位于同一级目录下,于是构造文件包含的payload。分析题目,与上一题目相同,需要使用到文件包含,那么可以进行制作、上传图片马获取服务器权限。docker-compose.yml文件或者docker tar原始文件。分析题目,需要使用到文件包含,那么可以进行制作、上传图片马获取服务器权限。尝试制作三种形式的图片马进行上传并获取服务器权限。准备两个文件,test.php,123.jpg。上传完成后,将目光放在文件包含的利用上。

2025-02-27 22:27:56 269

原创 文件上传-黑名单绕过4

对于黑名单的绕过是最容易理解的一种绕过方式,只要可以突破上传点没有限制到的后缀名即可上传成功。对于黑名单的绕过是最容易理解的一种绕过方式,只要可以突破上传点没有限制到的后缀名即可上传成功。至于如何知晓哪些后缀没有被限制,可以使用 burpsuite 批量上传来测试后缀名。在测试上传点时,只要上传点忽略了其中一点,我们就能够上传可以解析的php文件;在测试上传点时,只要上传点忽略了其中一点,我们就能够上传可以解析的php文件;在测试上传点时,只要上传点忽略了其中一点,我们就能够上传可以解析的php文件;

2025-02-27 22:27:43 615

原创 文件上传-分布式配置文件

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置,通过.htaccess文件可以实现网页301重定向、自定义404页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。此题考查文件上传中的后端校验,定义一个黑名单,若后缀是其中的一个,则不能上传,但是黑名单存在过滤不全的情况,这里没有过滤“.htaccess”。接下来再上传任意文件后缀,如jpg文件。首先上传一个.htaccess文件,文件内容为“根据上传返回路径,访问目标文件。

2025-02-24 20:06:18 265

原创 文件上传-黑名单关键字绕过

对于黑名单的绕过是最容易理解的一种绕过方式,只要可以突破上传点没有限制到的后缀名即可上传成功。至于如何知晓哪些后缀没有被限制,可以使用 burpsuite 批量上传来测试后缀名。F12或者邮件审查元素,打开控制台,使用该按钮点击图片,可以发现图片上传位置;在测试上传点时,只要上传点忽略了其中一点,我们就能够上传可以解析的php文件;该配置模块规定了哪些后缀可以被视为php文件解析;访问php3后缀文件,成功解析为php。2、对于上传点的测试思路。上传1.php文件并抓包。复制文件后缀,开始爆破;

2025-02-24 20:06:04 526

原创 文件上传-Windows点空格点绕过

修改Url地址内容,将index.txt修改为indeX.txt;docker-compose.yml文件或者docker tar原始文件。但是假设我们上传的文件后缀为.php. .(php点号空格点号)那么前面所述的4种Windows绕过方案均无法使用;2、使用dirsearch扫描备份文件;抓包之后修改文件后缀为.php进行测试;扫描到index.txt备份文件;证明服务端服务器是Linux系统;修改文件后缀为. .(点空格点)3、上传jpg文件进行抓包;证明该文件已经上传成功。php文件成功解析;

2025-02-24 20:02:32 457

原创 文件上传-Windows大小写绕过、空格

当验证后端代码属于黑名单验证时,由于Windows和Linux文件系统有较大的差异,下一步需要测试服务器的操作系统是Windows还是Linux;2、由于Windows文件系统对大小写不敏感,如果后端代码未对文件后缀名大小写进行限制,那么我们可以上传.Php文件绕过上传限制;如果文件名为xxx.xxx的文件上传成功,则证明后端验证为黑名单检测,一般情况下,黑名单验证不允许如.php等文件后缀;通过回显,可以判断,后端代码在检测文件后缀的同时,同时检测了文件头需符合图片内容标准;

2025-02-24 20:02:20 860

原创 文件上传-Windows点号绕过

我们便可以利用该特性,上传一个xxx.php.的文件绕过后端代码黑名单的验证。同时,保存在Windows系统时,会去除点好,保证php文件的正常访问解析。当验证后端代码属于黑名单验证时,由于Windows和Linux文件系统有较大的差异,下一步需要测试服务器的操作系统是Windows还是Linux;如果文件名为xxx.xxx的文件上传成功,则证明后端验证为黑名单检测,一般情况下,黑名单验证仅不允许如.php等文件后缀;通过回显,可以判断,后端代码在检测文件后缀的同时,同时检测了文件头需符合图片内容标准;

2025-02-24 20:02:06 409

原创 文件包含-session2

从index.php可以看出 $_SESSION[‘name’] = $_POST[‘name’] ,session的值可控,session默认的保存位置如下。由于 ini_set(‘open_basedir’, ‘/var/www/html:/tmp’) ,我们包含不了 /var/lib/ 下的session。分析题目源码,可以看出 $_GET[‘function’] 和 $_SESSION[‘name’] = $_POST[‘name’] 可控。而且 include($file);

2025-02-24 20:01:53 357

原创 PHP-综合4

这里可以利用php的伪协议,就可以控制写入文件的方式。另外因为base64解码是4位4位的解的,所以我们要保证我们需要解码的字符串之前的合法字符数为4的倍数,这样就不会影响我们传入的字符串正常解码。观察写入文件内容,有一小部是用户可以自定义控制的,但是不能插入尖括号这些html字符,因为进行了一次转义。可以看到在源代码中只进行了文件后缀名的判断,但并没有以获取到的文件后缀当作写入文件的后缀,就可以利用。只能出现在最末尾,而我们插入的字符串是在中间的,所以我们插入的字符串里不能有。可以看到,文件名是由。

2025-02-24 20:01:34 405

原创 【无标题】PHP-get_definde_vars

不太熟悉正则的注意正则中的 “+”,是为了拼接整个表达式的,并不是需要我们匹配 “+”,只需要reset所有的变量,然后只有当前get赋值,那么就只剩下get请求的变量了。"表示匹配1个或者0个表达式本身,最后的 “?函数,用空字符串进行代替,得到一个字符串必须是完全等于**“;,(注意这个W是大写的),匹配非字母、数字、下划线。简而言之,正则限制了只能执行一个函数,但不能设置参数。其中"[]“表示匹配的开始结束,”^"表示取反。来操纵这个数组,就可以获取到想要的变量值。分析题目代码,逻辑十分清晰。

2025-02-24 20:01:16 404

原创 PHP-create_function

分析代码逻辑,思路还算是比较清晰,正则很明显,就是要想办法在函数名的头或者尾找一个字符,不影响函数调用。docker-compose.yml文件或者docker tar原始文件。紧接着就到了如何只控制第二个参数来执行命令的问题了,后来找到可以用。然后执行,如果我们想要执行任意代码,就首先需要跳出这个函数定义。的第一个参数是参数,第二个参数是内容。这样一来,我们想要执行的代码就会执行。蚁剑连接获取flag。

2025-02-24 20:00:58 442

I4苹果助手

I4苹果助手,非常 好用。 懂的直接下载,一个好用的苹果管理工具。 值得保存。

2019-02-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除