当你的才华
还撑不起你的野心时
那你就应该静下心来学习
目录
Web (新手练习题)之 command_execution
Web (新手练习题)之 command_execution
0x01 前言
想玩玩攻防世界的朋友,CE已附上XCTF Web 练习题传送门:https://adworld.xctf.org.cn/
难度系数: 一星
题目来源: Cyberpeace-n3k0
题目描述:小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。
0x02 补充知识点:
常见命令拼接符
• && :执行两个命令,若前面出错,后面不会执行
• & : 执行两个命令,若前面出错,后面还是会执行
• || : 执行正确的那个命令,前面的失败,后面也会执行,前面成功,后面不会执行
• | : 只会执行后面的命令
常见连接符 举例 效果 ; A;B 先执行A,再执行B & A&B 简单拼接,A B之间无制约关系 | A|B 显示B的执行结果 && A&&B A执行成功,然后才会执行B || A||B A执行失败,然后才会执行B 命令执行漏洞
命令执行漏洞是什么:
当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system,exec,shell_exec等,当用户可以控制命令执行函数中的参数时,将可注入恶意系统命令到正常命令中,造成命令执行攻击。该题中,直接把用户输入的参数不经过过滤直接放在ping命令之后,而恶意攻击者可以在输入的参数中用&&或|或||截断,而执行下一个恶意命令
注意:
%0A
是换行符的url编码形式,有的时候可以用来绕过对以上常见的连接符过滤了的情况。命令执行如果有搞忘的,请前往如下链接:
0x03 解题思路
1、打开解题URL地址,给出如下图的内容,貌似是一个具有Ping 功能的页面。
2、那么如下,输入127.0.0.1,Ping 一下本地的IP 看看能不能成功执行,并查看命令执行结果
如上图,发现能成功返回信息,而且开局就提示过没有WAF,CE联想到能否使用命令拼接的方式来执行其它命令?
3、咋们打开浏览器,在文本框内输入127.0.0.1 | find / -name "flag*" (将 | 替换成 & 或 && 都可以),查找flag所在位置,尝试一下看看能否成功
4、执行成功,得到flag.txt存放的地址,我们如下,输入 127.0.0.1 | cat /home/flag.txt 获取Flag
cyberpeace{6d947e9ef8352104082e9d173396ae60}
HackBar
HackBar 工具POST提交方式获得Flag
首先获取文本框的参数的值是多少,然后再用POST 提交方式一步步获得Flag,我这里是直接输入了Flag 的地址直接获取的,你也可以一步步按照上述的操作步骤在HackBar 里面用POST 方式来查询试试
执行成功,获得Flag
或用Burp 抓包放到重放里,慢慢调试获得Flag的地址
或自己写一个import request 脚本去跑获得Flag的地址
我不需要自由,只想背着她的梦
一步步向前走,她给的永远不重