- 博客(75)
- 资源 (1)
- 收藏
- 关注
原创 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
290
原创 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
428
原创 PHP-ereg
分析代码,首先参数以post方式传入,再看条件,第一个if,ereg函数的作用是正则匹配,此处是要求传入的参数只能为单个或多个数字,结果才能为true,接下来与FALSE进行强比较,结果为FALSE,所以跳过执行下一个判断条件。因为ereg函数存在%00截断漏洞,就是说ereg会把%00当成是字符串的结尾,%00之后的字符串就不进行匹配了。②ereg函数存在NULL截断漏洞,导致正则过滤被绕过,可以用%00–截断,而strpos函数不存在,因此可以读取到后面的字符串,所以既可以用%00绕过。
2025-03-25 19:59:00
420
原创 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
134
原创 PHP-filter协议
首先定义了filter()方法对用户输入进行验证和过滤,不能含有正则表达式当中的字符串,并且过滤了上一题所使用的zlib协议。在第二个if条件判断中,如果传入的值不是正常存在的文件,并且通过filter()方法检验通过即可调用highlight_file打印源码。在第二个if条件判断中,如果传入的值不是正常存在的文件,并且通过filter()方法检验通过即可调用highlight_file打印源码。分析代码逻辑,首先定义了filter()方法对用户输入进行验证和过滤,不能含有正则表达式当中的字符串。
2025-03-25 19:58:32
179
原创 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
215
原创 FakeWget
题目只有三个路由,一个输入点,容易判断考点是命令注入,因此需要先不断测试传入数据并刷新观察回显,来猜测后端与wget命令拼接逻辑和过滤逻辑,下面是三个比较典型的fuzz示例。这里特殊符号被替换成空格,\n绕过了检查wget的grep命令,并将/etc/passwd的文件内容发送到代理机上。接下来就是找flag文件,第三个路由(点击getflag)访问后看网站源码,可知flag文件名称是。绕过正则检查,只需要构造出空格且领用wget命令即可。这里fuzz出分号不可用,同理可得反引号,
2025-03-25 19:58:06
67
原创 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
99
原创 【无标题】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
193
原创 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
80
原创 信息搜集-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
85
原创 信息搜集-Banner信息搜集
docker-compose.yml文件或者docker tar原始文件。F12打开控制台,在Network中查看响应包。
2025-02-27 22:30:05
131
原创 PHP-zlib协议
分析代码逻辑,与上一题相同。首先定义了filter()方法对用户输入进行验证和过滤,不能含有正则表达式当中的字符串,并且过滤了上一题所使用的filter。在第二个if条件判断中,如果传入的值不是正常存在的文件,并且通过filter()方法检验通过即可调用highlight_file打印源码。docker-compose.yml文件或者docker tar原始文件。可以使用其他协议进行绕过,例如zlib协议。
2025-02-27 22:29:35
245
原创 有回显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
284
原创 无回显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
300
原创 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
271
原创 文件上传-NTFS文件流
验证Windows操作系统还是Linux操作系统可以通过改变url地址的大小写加以区分,Windows操作系统大小写不敏感,Linxu操作系统大小写敏感;当验证后端代码属于黑名单验证时,由于Windows和Linux文件系统有较大的差异,下一步需要测试服务器的操作系统是Windows还是Linux;如果文件名为xxx.xxx的文件上传成功,则证明后端验证为黑名单检测,一般情况下,黑名单验证仅不允许如.php等文件后缀;通过回显,可以判断,后端代码在检测文件后缀的同时,同时检测了文件头需符合图片内容标准;
2025-02-27 22:28:49
316
原创 文件上传-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
166
原创 文件上传-图片马(训练题1)
分析题目,与上一题目相同,需要使用到文件包含,那么可以进行制作、上传图片马获取服务器权限。docker-compose.yml文件或者docker tar原始文件。尝试制作三种形式的图片马进行上传并获取服务器权限。
2025-02-27 22:28:11
189
原创 文件上传-图片马(训练题2)
通过url可知,upload目录和include.php文件位于同一级目录下,于是构造文件包含的payload。分析题目,与上一题目相同,需要使用到文件包含,那么可以进行制作、上传图片马获取服务器权限。docker-compose.yml文件或者docker tar原始文件。分析题目,需要使用到文件包含,那么可以进行制作、上传图片马获取服务器权限。尝试制作三种形式的图片马进行上传并获取服务器权限。准备两个文件,test.php,123.jpg。上传完成后,将目光放在文件包含的利用上。
2025-02-27 22:27:56
256
原创 文件上传-黑名单绕过4
对于黑名单的绕过是最容易理解的一种绕过方式,只要可以突破上传点没有限制到的后缀名即可上传成功。对于黑名单的绕过是最容易理解的一种绕过方式,只要可以突破上传点没有限制到的后缀名即可上传成功。至于如何知晓哪些后缀没有被限制,可以使用 burpsuite 批量上传来测试后缀名。在测试上传点时,只要上传点忽略了其中一点,我们就能够上传可以解析的php文件;在测试上传点时,只要上传点忽略了其中一点,我们就能够上传可以解析的php文件;在测试上传点时,只要上传点忽略了其中一点,我们就能够上传可以解析的php文件;
2025-02-27 22:27:43
611
原创 文件上传-分布式配置文件
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置,通过.htaccess文件可以实现网页301重定向、自定义404页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。此题考查文件上传中的后端校验,定义一个黑名单,若后缀是其中的一个,则不能上传,但是黑名单存在过滤不全的情况,这里没有过滤“.htaccess”。接下来再上传任意文件后缀,如jpg文件。首先上传一个.htaccess文件,文件内容为“根据上传返回路径,访问目标文件。
2025-02-24 20:06:18
261
原创 文件上传-黑名单关键字绕过
对于黑名单的绕过是最容易理解的一种绕过方式,只要可以突破上传点没有限制到的后缀名即可上传成功。至于如何知晓哪些后缀没有被限制,可以使用 burpsuite 批量上传来测试后缀名。F12或者邮件审查元素,打开控制台,使用该按钮点击图片,可以发现图片上传位置;在测试上传点时,只要上传点忽略了其中一点,我们就能够上传可以解析的php文件;该配置模块规定了哪些后缀可以被视为php文件解析;访问php3后缀文件,成功解析为php。2、对于上传点的测试思路。上传1.php文件并抓包。复制文件后缀,开始爆破;
2025-02-24 20:06:04
495
原创 文件上传-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
439
原创 文件上传-Windows大小写绕过、空格
当验证后端代码属于黑名单验证时,由于Windows和Linux文件系统有较大的差异,下一步需要测试服务器的操作系统是Windows还是Linux;2、由于Windows文件系统对大小写不敏感,如果后端代码未对文件后缀名大小写进行限制,那么我们可以上传.Php文件绕过上传限制;如果文件名为xxx.xxx的文件上传成功,则证明后端验证为黑名单检测,一般情况下,黑名单验证不允许如.php等文件后缀;通过回显,可以判断,后端代码在检测文件后缀的同时,同时检测了文件头需符合图片内容标准;
2025-02-24 20:02:20
851
原创 文件上传-Windows点号绕过
我们便可以利用该特性,上传一个xxx.php.的文件绕过后端代码黑名单的验证。同时,保存在Windows系统时,会去除点好,保证php文件的正常访问解析。当验证后端代码属于黑名单验证时,由于Windows和Linux文件系统有较大的差异,下一步需要测试服务器的操作系统是Windows还是Linux;如果文件名为xxx.xxx的文件上传成功,则证明后端验证为黑名单检测,一般情况下,黑名单验证仅不允许如.php等文件后缀;通过回显,可以判断,后端代码在检测文件后缀的同时,同时检测了文件头需符合图片内容标准;
2025-02-24 20:02:06
402
原创 文件包含-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
345
原创 PHP-综合4
这里可以利用php的伪协议,就可以控制写入文件的方式。另外因为base64解码是4位4位的解的,所以我们要保证我们需要解码的字符串之前的合法字符数为4的倍数,这样就不会影响我们传入的字符串正常解码。观察写入文件内容,有一小部是用户可以自定义控制的,但是不能插入尖括号这些html字符,因为进行了一次转义。可以看到在源代码中只进行了文件后缀名的判断,但并没有以获取到的文件后缀当作写入文件的后缀,就可以利用。只能出现在最末尾,而我们插入的字符串是在中间的,所以我们插入的字符串里不能有。可以看到,文件名是由。
2025-02-24 20:01:34
397
原创 【无标题】PHP-get_definde_vars
不太熟悉正则的注意正则中的 “+”,是为了拼接整个表达式的,并不是需要我们匹配 “+”,只需要reset所有的变量,然后只有当前get赋值,那么就只剩下get请求的变量了。"表示匹配1个或者0个表达式本身,最后的 “?函数,用空字符串进行代替,得到一个字符串必须是完全等于**“;,(注意这个W是大写的),匹配非字母、数字、下划线。简而言之,正则限制了只能执行一个函数,但不能设置参数。其中"[]“表示匹配的开始结束,”^"表示取反。来操纵这个数组,就可以获取到想要的变量值。分析题目代码,逻辑十分清晰。
2025-02-24 20:01:16
382
原创 PHP-create_function
分析代码逻辑,思路还算是比较清晰,正则很明显,就是要想办法在函数名的头或者尾找一个字符,不影响函数调用。docker-compose.yml文件或者docker tar原始文件。紧接着就到了如何只控制第二个参数来执行命令的问题了,后来找到可以用。然后执行,如果我们想要执行任意代码,就首先需要跳出这个函数定义。的第一个参数是参数,第二个参数是内容。这样一来,我们想要执行的代码就会执行。蚁剑连接获取flag。
2025-02-24 20:00:58
428
原创 PHP-create_function
php里默认命名空间是\,所有原生函数和类都在这个命名空间中。普通调用一个函数,如果直接写函数名function_name()调用,调用的时候其实相当于写了一个相对路径;而如果是\function_name()这样的形式去调用函数,则是表示写了一个绝对路径。如果在其他namespace里调用系统类,必须使用绝对路径的写法。docker-compose.yml文件或者docker tar原始文件。分析代码逻辑,对sxf进行了一个正则表达式过滤,post传参的。进行了组合,这里我们可以使用。
2025-02-24 20:00:30
266
原创 PHP-回溯
如果回溯次数超过了 100 万,preg_match 将不再返回非 1 和 0,而是 false。PHP为了防止正则表达式的拒绝服务攻击(回溯次数过多),限制了回溯的次数。那么此题的答案就呼之欲出了,发送超长字符串的方式,使正则执行失败,最后绕过目标对PHP语言的限制。php的PCRE库使用的就是NFA的正则引擎,就会涉及到回溯的一个过程。当回溯的次数超过这个限制的时候,会返回一个false (匹配成功返回1,匹配失败返回的是0)后不能添加( `;可以匹配任何字符,所以最终匹配到了输入串的结尾,也就是。
2025-02-06 17:12:03
535
原创 PHP-变量特性(练习)
然而$ctf_show已经进行赋值了,但是结合上一行代码中的,extract($_GET)可知可使用变量覆盖的方式重新赋值。然而,与上题不同此题目对$c进行了更多的过滤,包括flag,GLOBALS,echo,var_dump,print等字符串。$_POST[‘CTF_Sangfor.com’]*是否设置,并且不能设置$_GET[‘fl0g’]。$_POST[‘CTF_Sangfor.com’]*是否设置,并且不能设置$_GET[‘fl0g’]。,所以只需要关注$c和if判断的两个POST方法即可。
2025-02-06 17:11:37
891
原创 PHP-综合3
若想使v4为真,v2传的参数要为数字或者数字字符串,同时v2也是我们要写入的webshell为了让v2为数字或者数字字符串,我们可以先把我们的webshell转换为base64编码,再把base64编码转换为16进制,这是一种办法去转换成数字。从前面的学习可知intval函数是取整函数,intval()函数会将非数字或非数字字符串转换为0,也就是我们传入的f1和f2互相构造即可,我们可以构造一个md5,这样intval就会返回0。首先PHP弱比较中字符串和数字比较时,字符串会先进行类型转换,转换为’0’。
2025-02-06 17:11:09
753
原创 PHP-三目运算(练习1)
然后将$d和$c[0]进行拼接,然后通过eregi()来做正则匹配,若出现“3”、“1”、“c”则匹配成功直接die,最后进行两个拼接后字符串的查找,利用eregi()函数的的%00截断漏洞即可绕过。分析代码逻辑,可以看出foo是一个json对象,经过json_decode()函数解析之后,变量bar1不能为数字,但又要大于2016。变量bar2,首先判断$a[“bar2”]是否是一个数组,长度是否为5,数组中第一个元素是否又为数组,令bar2为[[0],0,1,2,3]即可。再回到题目代码,进行分析。
2025-02-06 17:10:42
481
原创 PHP-运算符
分析代码逻辑,首先在第一个if条件判断当中有三个参数username,password,code。在第二个if判断中出现了运算符的比较。看似条件苛刻,$code需要等于一个随机值,并且$password需要等于$flag。这都是未知的变量,无法获取。docker-compose.yml文件或者docker tar原始文件。满足第二个if条件即可,payload为。但是在PHP中运算符的优先级。
2025-02-06 17:10:10
364
原创 PHP-trim
is_numeric函数来判断用户输入是否为数字,并且if条件里规定trim($num)移除字符串两侧的字符不能等于36,但后面的if需要等于36才能输出flag。分析代码逻辑,使用了自定义函数filter()对$num进行过滤,将0x,0,e等字符替换为了1。这意味着将无法使用16进制,8进制等方法进行绕过。docker-compose.yml文件或者docker tar原始文件。分页符可以利用,不会被trim过滤掉,所以payload为。此时可以编写脚本查看哪些字符可以使用。
2025-02-06 17:09:37
278
原创 自动更新docker版本的open webui,ollama
自动更新docker安装的open webui。如果更新ollama只需把open-webui替换成ollama即可。也可以用下面代码实现后台监控并自动更新。
2024-04-22 09:03:51
5815
1
原创 AI大模型量化格式介绍(GPTQ,GGML,GGUF,FP16/INT8/INT4)
本文总结了 HuggingFace 上模型的常见量化格式,量化技术是 AI 模型部署的重要技术,它可以大大减小模型的大小和推理所需的显存。想要让大语言模型真正地走进普通人的生活,在每个人的手机上能运行起来,做到真正意义上的“普及”,那么量化技术以后肯定是必不可少的,因此掌握一些量化技术是非常有必要的。关注我,一起学习各种人工智能和 AIGC 新技术,欢迎交流,如果你有什么想问想说的,欢迎在评论区留言。
2024-04-18 23:20:57
8445
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人