进入题目一直点here啥都没有。
所以用御剑扫描出后台有个文件是robots.txt
打开后发现出现admin.php和login.php
尝试打开这两个网站
login.php
admin.php
这两个登录框差不多。看到登录框肯定想到的就是sql注入了。
所有先试一下admin.php的id:
没有任何的报错信息
试一下login.php的id
报错存在注入
admin’#
回显了这个信息。
我们用bp跑一下看看到底式过滤了什么么
只有’ 是有回显信息的
用admin’ or 1=1—试试
进去了。。又返回主界面
就奇怪 了
点开源码
那我们后面+?debug
sql查询可以轻松闭合,但是这里并没有要给flag的意思,bp抓包再对username进行注入,看响应头有没有给出信息:
这里需要细心一点就是数据库并不是SQL数据库
是
这个数据库没有见过啊。。。
构造usr=’ union select name,sql from sqlite_master—+&pw=
为什么要查询sql呢,这涉及到sqlite自带的结构表sqlite_master,sql是sqlite_master中的一个字段,注入时经常用到的,注入后响应头的set-cookie:
set-cookie也就是:
• CREATE TABLE Users(
• id int primary key,
• name varchar(255),
• password varchar(255),
• hint varchar(255)
• )
这就出现了表名和表中的字段了,仍然在usr处用limit进行移位并查询:
(也就是后面的 limit 0,1;limit 1,1;limit 2,1)
usr=%27 UNION SELECT id, id from Users limit 0,1--+&pw=chybeta
usr=%27 UNION SELECT id, name from Users limit 0,1--+&pw=chybeta
usr=%27 UNION SELECT id, password from Users limit 0,1--+&pw=chybeta
usr=%27 UNION SELECT id, hint from Users limit 0,1--+&pw=chybeta
得到的数据
发现能够解开 2,3 的 sha1,而 1 的 sha1 无法解开。表的信息都有了,flag 呢?
name=+my+fav+word+in+my+fav+paper%3F%21
我们根据这句话洞察到,最终你的密码还是不在我们的网站中,说我最喜欢的词(密码)在我最喜欢的文章中
好吧,还得找到作者最喜欢的文章,但是我们之前查到有密码,所以有可能这个就是作者最喜欢的文章的哈希值SQL基础知识积累:
UNION :合并两个或者两个以上的SQL语句(默认地,UNION 操作符选取不同的值)
UNION ALL:合并操作符相同的几个SQL语句
:url中#号是用来指导浏览器动作的(例如锚点),对服务器端完全无用。所以,HTTP请求中不包括#使用时#号改成url的编码%23就可以了
爬取站点中所有的pdf文件,总共30个,然后用脚本进行解析处理,并用sha1函数与加密的密码进行碰撞已找出正确的密码,拿大佬的脚本:
跑出admin的密码为:ThinJerboa
在admin.php界面用admin登录得到flag:
flag{Th3_Fl4t_Earth_Prof_i$_n0T_so_Smart_huh?}