No.32【宽字节注入】【绕过引号】这一关过滤了' " /function check_addslashes($string) { $string = preg_replace('/'. preg_quote('\\') .'/', "\\\\\\", $string); //escape any backslash $string = preg_replace(
No.27【过滤select和union】首先测试发现是单引号注入点,然后测试发现过滤字符:测试发现可以用%0a代替空格,and也没有被过滤:方法一: ?id=0'%0auniOn%0aseLect%0a1,database(),3%0aand '1'='1 //大小写绕过select和union 方法二: 直接报错注入: ?id=-1'and(updatexml(1,c
No.23【过滤注释符】先测试出是单引号报错,但是?id=1 #还是报错,推测是#和--+被过滤,一看源码果然是:$id=$_GET['id']; //filter the comments out so as to comments should not work $reg = "/#/"; $reg1 = "/--/"; $replace = ""; $id = preg_replace(
No.19【http头referer注入】$uagent = $_SERVER['HTTP_REFERER']; $IP = $_SERVER['REMOTE_ADDR']; $insert="INSERT INTO `security`.`referers` (`referer`, `ip_address`) VALUES ('$uagent', '$IP')"; echo 'Your
No.15测试了一下这关不回显也不报错,只能用时间注入或者布尔注入布尔注入测试:uname=admin/*测试符号*/ and 1=1 #&passwd=xxx //成功 uname=admin/*测试符号*/ and 1=2 #&passwd=xxx //失败布尔注入测试:uname=admin/*测试符号*/ and sleep(2)
No.11【登录框注入】这关开始就进入了带有登录框的sql注入了。一般这种输入框的后端请求数据库的格式都类似这样$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";于是我们可以这样构造:就相当于SELECT username, password FR
No.7【输出到外部】还是先测试注入点?id=1正常?id=1 and 1=2也正常,说明不是数字型注入?id=1'发现报错?id=1"发现不报错那么接下来就以单引号为基础来找注入点为什么接下来就以单引号为基础来找注入点?以这道题为例$id=$_GET['id']; $sql="SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1";单引号围起来的地方,
No.5【报错型注入】输入?id=1发现不回显输入?id=1'报错use near ''1'' LIMIT 0,1' at line 1 即 '1'' LIMIT 0,1是单引号字符注入,但是不回显就很难受基本的注入点就是?id=1' --+floor报错注入原理分析首先创建一张测试表然后我们以age为主键进行分类再创造一个能生成伪随机数的语句于是可以构造:发现报错爆出了数据表的名字,那么为什么会
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号