Less13 利用文件包含绕过
0x01 Less13说明
查看源代码
function getReailFileType($filename){
$file = fopen($filename, "rb"); $bin = fread($file, 2); //只读2字节 fclose($file); $strInfo = @unpack("C2chars", $bin); $typeCode = intval($strInfo['chars1'].$strInfo['chars2']); $fileType = ''; switch($typeCode){ case 255216: $fileType = 'jpg'; break; case 13780: $fileType = 'png'; break; case 7173: $fileType = 'gif'; break; default: $fileType = 'unknown'; } return $fileType;}$is_upload = false;$msg = null;if(isset($_POST['submit'])){
$temp_file = $_FILES['upload_file']['tmp_name']; $file_type = getReailFileType($temp_file); if($file_type == 'unknown'){
$msg = "文件未知,上传失败!"; }else{
$img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").".".$file_type; if(move_uploaded_file($temp_file,$img_path)){
$is_upload = true; } else{
$msg = "上传失败"; } }}
这一关只是对文件中的前两个字节进行判断,因此可以制作一个图片马,但是这一关需要配合文件包含漏洞,因此可以在upload目录下写一个存在文件包含漏洞的php文件,两者结合getshell。
0x02 文件上传
方法一:使用文件包含漏洞绕过
①:在服务器上写入include.php(假设实际环境中存在文件包含)
②:制作一句话木马
使用这种方法可以制作图片马,但是上传失败(可能是图片太大,超过了限制。)
因此使用下面方式直接写入图片马
③:上传文件并用burp抓包
④:使用文件包含漏洞
0x03 方法总结
在现实环境中,对于有些文件上传限制的比较死,因此需要结合其他漏洞来进行利用,比如文件包含漏洞等。一般在URL里面存在?page、?file、?home等,就可能存在文件包含漏洞。如果发现文件包含漏洞,就可以尝试寻找上传点进行上传,利用文件包含进行解析,在PHP环境中,如果存在文件包含漏洞,那么该文件将优先被当作php类型进行解析。
Less14 利用图片马绕过
0x01 Less14说明
查看源代码
function isImage($filename){
$types = '.jpeg|.png|.gif'; if(file_exists($filename)){
$info = getimagesize($filename); $ext = image_type_to_extension($info[2]); if(stripos($types,$ext)){
return $ext; }else{
return false; } }else{
return false; }}$is_upload = false;$msg = null;if(isset($_POST['submit'])){
$temp_file = $_FILES['upload_file']['tmp_name']; $res = isImage($temp_file); if(!$res){
$msg = "文件未知,上传失败!"; }else{
$img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").$res; if(move_uploaded_file($temp_file,$img_path)){
$is_upload = true; } else{
$msg = "上传失败"; } }}
在这一关使用了getimagesize()函数,getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息,我们在图片中插入一句话并且可以正常显示图片绕过此函数。
0x02 文件上传
方法一:使用图片马绕过
①:在服务器上写入include.php(假设实际环境中存在文件包含)
②:制作图片马
copy 1.jpg/b + 1.php/a phpinfo.jpg
参数/b指定以二进制格式复制、合并文件; 用于图像类/声音类文件
③:上传jpg文件
上传失败
<