2018小训—2017_“百度杯”CTF比赛_十月场_GetFlag

题目源:  https://www.ichunqiu.com/battalion?q=2729  i春秋上滴题目

小工具:  Burp Suite(抓包神器)、pyhon3的环境

思路点用黄色加粗标记、操作点用绿色加粗标记。

解题的流程:

    1.(忽略对首页的调侃,直接login)仔细观察,登录题,检查源码没有隐藏的元素,cookie没有可疑点,,注意力全部放在substr(md5(captcha), 0, 6)=xxxxxx(一个六位字符串,每个人虚拟题目配置的都不同),要求我们提供的captcha经过md5加密后的前六位与xxxxxx相等,进行md5碰撞尝试,编写一个python3脚本.

 1 import hashlib
 2 
 3 def getMD5():
 4     catch=1
 5     while 1:
 6         MD5=hashlib.md5(str(catch).encode("utf-8")).hexdigest()
 7         if(MD5[0:6]=="XXXXXX")://要求的六位字符串
 8             print(catch)
 9             return 
10         catch=catch+1
11 
12 if __name__=="__main__":
13     getMD5()
14     print("over!")

    2.解决了验证码的事,开始考虑Username和Password,因为其他途径之前检查的差不多了,应该是sql_injection的考点了,进行多次的sql尝试(这个知识点不展开,太大了)阔以发现:Username=admin' or 1=1#   Password=xxxxx(随便输入)成功登录。

    3.查看三个文档的内容,在a.php中提到了flag在根目录下,那就按文件下载的套路,截取下载请求包,把目标文件路径改为flag所在路径,我先尝试的相对路径下载“../flag.php”,结果失败。学习大佬的姿势,这里使用的是绝对路径“/var/www/html/Challenges/flag.php”(我比较疑惑的就是这个绝对路径是怎么猜解出来的)。返回一份php源码。

    4.审计源码,我们要提交一个post表单,添加一个flag=flag,就能返回我们的的值了,有意思的是源码中的判断===。post表单如下

猜你喜欢

转载自www.cnblogs.com/goodswarm/p/9300590.html