暑期练习web24:后台登陆(实验吧) md5返回值

解题连接:http://ctf5.shiyanbar.com/web/houtai/ffifdyop.php
上来就是常规的登陆界面,所以二话不说,先看源码
暑期练习web24:后台登陆(实验吧) md5返回值_第1张图片

看到了最重要的一段,sql的那一句是要对比数据库中的admin和password,但发现他的password用MD5加密了(这是为了防止我们输入‘“or 这些符号绕过验证password)
先来说一下md5()这个函数

md5(string, raw) raw 可选,默认为false

true:返回16字符2进制格式(编码过后的二进制)

false:返回32字符16进制格式

简单来说就是 true将16进制的md5转化为字符了,如果某一字符串的md5恰好能够产生如’or ’之类的注入语句,就可以进行注入了.
这时候我们看到网址结尾的ffifdyop,那就拿这个试试把
暑期练习web24:后台登陆(实验吧) md5返回值_第2张图片
先给大家看一下,直接md5(默认是false)
当参数是true时,果然就出现了’or’6
暑期练习web24:后台登陆(实验吧) md5返回值_第3张图片
好,到了这一步,有些同学就要问了,为什么’or’6xxx 这个东西可以查询
这里先摆一下实例,确实可以
暑期练习web24:后台登陆(实验吧) md5返回值_第4张图片

SELECT * FROM admin WHERE username = ‘admin’ and password = ‘'or6xxxx(随意)
把等号后面整个当成一个逻辑语句,这句话里,前面的”为空,即为0,但因为是or连接的,后面只要是个大于等于1的数,就为真了,而且由于sql是弱类型,所以后面接什么都可以
暑期练习web24:后台登陆(实验吧) md5返回值_第5张图片
所以,这道题后面就这样解出来了
暑期练习web24:后台登陆(实验吧) md5返回值_第6张图片
总结:本题本身难度不大,需要一定的脑洞,以及理解sql语句的特点

你可能感兴趣的:(ctf,web,sql,web,ctf,sql)