首页 » PHP教程 » PHP注入进攻技巧_收集安然干货|SQL注入进击思路手腕总结上

PHP注入进攻技巧_收集安然干货|SQL注入进击思路手腕总结上

访客 2024-12-11 0

扫一扫用手机浏览

文章目录 [+]

分高下篇,上篇为攻击手腕概括,初稿不会写太多,后面会更新;下篇为防御篇,会把一些常见的,不常见地写进去。

二、观点

SQL注入漏洞之以是会涌现便是开拓职员针对代码编写开拓web运用程序过程中,未对利用者输入的可控参数的合法性进行有效判断和过滤。
从而造成被别有用心之人,利用“参数可控”特性将恶意参数带入数据库中实行,造成了恶意的SQL语句对数据库实行行为。

PHP注入进攻技巧_收集安然干货|SQL注入进击思路手腕总结上

归结出两个条件,引起SQL注入:

PHP注入进攻技巧_收集安然干货|SQL注入进击思路手腕总结上
(图片来自网络侵删)

1.传入参数可控,利用者可以对传入数据库的参数变量进行操作。

2.运用过滤不当,前端或者web运用、框架等未对利用者做好隐蔽实行语句和传入参数的严格过滤。

SQL注入的关联性

实在“注入”这个行为,也是一种对数据库的操作。
这个行为的对敏感信息造成泄露,以是剖断成恶意地“注入”,实际上与用户的普通操作别无二致,在开拓过程中,该当对用户的“操作”进行过滤和规范,只管即便减少SQL注入的涌现。

SQL注入的注入点与脚本措辞关系不大,只和数据库类型干系。
就拿php站点和java站点来说,php站点会爆出更多的漏洞,由于java中存在预编译机制,以是相较来说sql注入更少,这是措辞特性决定的。
但是措辞特性和数据库没有强关联,在漏洞通报中涌现SQL注入,不会通报用何种措辞编写,只会涌现是何种数据库。

以是SQL注入只和数据库类型有关系,脚本措辞只是创造注入点的一个门户。

三、注入思路

这里给大家分享一些学习资料及思路大纲可【点击查看】

测试办法

黑盒测试:url、回显、报错、延时、布尔状态等等

白盒测试:代码审计

攻击办法选取

参数类型>>【闭合办法】

数据库类型>>【payload的选择和语句组合】

提交办法>>【传参的办法可以绕过某些防护设备】

数据查询办法>>【是否有回显,回显点;延时注入的模糊判断;二次注入的数据呈现;工具有时候无法对所有数据捕获】

传输时加密>>【要提交对方可以识别的参数】

注入权限>>【拿到的权限是否可以造成威胁、扩大威胁】

攻击办法的选取该当存在多角度,但是一定离不开脚本措辞、数据库类型和数据传输。

注入危害

单个数据库拿权>>【考虑低权限提权,查看是否存在可利用函数和扩展】

多个数据库拿权>>【考试测验探求信息透露多角度提权,考试测验利用高等函数、跨库提权】

后台数据透露>>【探求、构筑路由,探求管理员账号、历史配置文件等】

web权限丢失>>【考试测验对网站功能点测试】

做事器权限丢失>>【进行横移;站库分离时,从数据库拿到宿主理事器的权限;根据当前数据库类型和做事器的安全性决定】

点到面打破,数据库中可以包含许多信息,这已经不是纯挚SQL注入,可以发展到其他攻击面进行渗透。

特点注入

措辞只决定SQL注入产生概率>>【确定网站利用的措辞,根据不同的措辞特性进行注入,提高效率】

数据库类型决定SQL注入的过程>>【每种数据的语句存在差异,这样的差异决定注入的思路】

SQL注入须要人工合营>>【工具存在一定的局限性,部分工具对付数据回传没有剖断从而忽略注入点】

存在防护设备下注入>>【剖断防护设备,可以考试测验“旧瓶装新酒”对旧思路加工再注入;分块、编码、、垃圾数据、带外、中间等注入】

有目的去注入,才会使攻击效率提高。
SQL注入通过多维度确定对方信息,能有效选取payload和思路。

四、常见注入办法

1.盲注

所谓盲注,便是我们在注入过程中,无法得到直接的回显或者有效信息去判断注入点是否存在,须要借助一些方法去进行验证和获取返回的数据。

1.布尔盲注:实行SQL语句后,只会存在两种结果。
通过布局逻辑表达式判断数据的详细内容。

2.韶光盲注:由于数据传输存在韶光差,可以利用sleep()函数等,去判断布局的逻辑表达式是否成功获取数据。

3.报错盲注:通过数据库的分外函数的报错逼迫使参数在报错页面输出。
这种函数每每会带出其他信息,可以扩展打击面。

2.堆叠注入

利用数据库特性,进行多语句实行。

但是限定较大,受API、数据库类型、权限、网站架构等限定。
一样平常多见于CTF比赛中,但是实际渗透中,如果存在多语句可实行,那么可以考试测验,大概有意外收成。

已知支持的数据库类型有: mysql、SQL-Server、PostgreSQL。

3.二次注入

二次注入实在便是,先注入数据后再注入,等同于一次注入。
攻击者先布局出特定语句存入数据库,当攻击者对存入数据或者语句进行读取时涌现注入点,这便是“二次”所在。

实在是一次内鬼之战,攻击者第一次输入的数据被认为是“安全”时,存入数据库内被转移,被转移的数据默认是安全的。
然后第二次输入时,调用时纵然输入数据没被转移,也可能被剖断成“安全”,这时造成二次注入。

4.差异化注入

注入时,须要把稳数据库类型和网站架构。
不同的数据库类型存在差异,利用这种差异进行注入攻击。

access数据库的偏移注入:知道表名而不知道列名时,利用“”对其拆解,当到达一定长度时返回正常页面。

mysql数据库的构造利用:由于mysql数据库的特性,库名-表名-列名-数据层层递归,mysql5或以上存在三张分外的表(information_schema.schemata/tables/colusmn),进行间接查询。

sqlite数据库的隐蔽表利用:sqlite文件中存在一张隐蔽表格 sqlite_master ,该表格记录下建表时的信息。

Mongodb数据库闭合注入&数组绑定注入:mongodb是一种非关系型数据库,可以利用布局数组后利用ne(等同于>等字符)进行注入。

5.基于场景的注入

host注入:由于不同措辞和开拓逻辑,获取IP的方法都是不一样的。
那么在数据包中有一个HOST字段,如果该字段可控,并且获取到IP地址数据被写入数据库中,那么就有机会存在HOST注入。

XFF注入:这个比较故意思,和XRIP字段一样,用于记录访问者的IP,这个字段记录“真实IP”。
但是一旦这个字段被修正,返回中存在“XXIP无法访问该资源”等类似语句时,就代表可控,可控也可以搞一波。

SQL注入实质上也是一种对数据库的操作,获取我们想要的信息。

相关文章