[极客大挑战 2019]HardSQL
#SQL注入
注入点在username里,尝试单引号报错
1 | You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1'' at line 1 |
经过尝试发现过滤了and
,union
,空格和/**/
等等关键字。其中,空格可以用()
绕过。
[GXYCTF2019]BabySQli
#SQL注入
POST两个参数,name
和pw
,一开始在pw里尝试注入,但是一直返回wrong pass!
,尝试在name里注入,报错,注入点应该在这个里。
尝试order by被拦截,union没事。
1 | name=admin' union select 1,2,3 #&pw=1 |
正常未报错,故有3个字段。
这里有一个小坑,我尝试吧name里的admin删掉网页直接无响应了,后面才发现这个是必须要传的,此外,因为这个登录也会验证用户名,所以就尝试在union里找哪个参数传用户名哪个参数传密码。
1 | name=1' union select 1,'admin',3 #&pw=1 |
请求通过,第二个传用户名,但密码无法确认。
说实话,到这一步其实卡住了,没什么思路。但是平台给出了题目源码。
1 | $name = $_POST['name']; |
通过对输入的密码md5后与SQL查询结果里的arr[2]
,即对查询结果的第三位进行比较,那么我们就可以构造请求对其进行绕过。
1 | name=1' union select 1,'admin','c4ca4238a0b923820dcc509a6f75849b' #&pw=1 |
把pw的输入md5后填充到union select
的第三位即可绕过,得到flag。
[CISCN2019 华北赛区 Day2 Web1]Hack World
#SQL注入