CTF_show WEB1通过order排序读取数据库数据(特定场景)

代码如下:

过滤很完整,不存在绕过。但是order参数可控。order参数默认为id,如果改成pwd则用password排序。我们可以通过pwd排序,来推断flag用户的密码即真正的flag。假设flag用户的密码为flag{26d56dfd-7b5a-4167-871a-679e352c1026}

f
fa
fl
flag
fm

字符串是如何做比较的?

当第一位字符相同时比较第二位字符,第二位字符一样,比较第三位字符,以此类推。(需要先转换为ascii码)

假设我们注册的用户密码同为f,用pwd排序则f在flag用户上面。接着我们再注册用户同密码fa的用户,发现fa再flag用户上面,则flag用户密码的第二位比fa小,接着继续注册到fl,发现fl用户在flag上面,因为fl与flag用户前两位相同,则比较第三位,fl只有两位,则在flag之上。接着注册fm,发现fm刚好在flag用户之下,则flag用户的密码第二位是fl。因为fl是刚刚等于flag用户的前两位大于三位以后,而fm则小于 flag用户,所以fl是flag用户的前两位。以此类推,最后退出flag用的的密码,即flag值。

原文地址:https://www.cnblogs.com/aptkekeo/p/13893076.html