暑期练习web15:web login(i春秋)百度杯十月 代码审计

暑期练习web15:web login(i春秋)百度杯十月 代码审计_第1张图片
让我们登陆,查看源码发现了一个提示:
于是就当用户名和密码输进去了,果然成功登陆
但登陆后就只有一个表情:(╯‵□′)╯︵┴─┴
然后源码什么都没得,没有思路的情况下,自然用burpsuite抓包来看一看有没有什么信息

暑期练习web15:web login(i春秋)百度杯十月 代码审计_第2张图片
在这个页面我们发现了一个奇怪的参数show,把他加到请求头并令他为1试试(这一步直接在bp左边加也行。。我那时候吃饭去了,回来就直接在控制台弄的)
暑期练习web15:web login(i春秋)百度杯十月 代码审计_第3张图片
然后就会出现一段代码,接下来又是熟悉的代码审计环节了
暑期练习web15:web login(i春秋)百度杯十月 代码审计_第4张图片

(

!= 在表达式两边的数据类型不一致时,转换为相同数据类型,然后对值进行比较.
!== 不会进行类型转换,在比较时除了对值进行比较以外,还比较两边的数据类型,

简单理解就是 != 会转换成相同类型 进行比较,!== 除了比对值还比对类型
好吧虽然解题没有用,只是记录下来。。。
这题的关键就是需要我们逆向推理:
requset中token对应的字符串,经过解base64、反gzcompress、反serialize出来赋值给login,而login[user]要求=ichunqiu,才能输出flag

所以,我们把键值对array[user]=ichunqiu经serialize序列化,gzcompress压缩,base64加密后的字符串,就是我们需要传给token的值(感觉有点绕。。。)
不过就是这么回事,我们找个在线运行的代码的网址

 
$login = array('user'=>'ichunqiu');
$a = base64_encode(gzcompress(serialize($login)));
echo $a
?>

暑期练习web15:web login(i春秋)百度杯十月 代码审计_第5张图片
得到token后通过传值给cookie(在member.php这个页面)
暑期练习web15:web login(i春秋)百度杯十月 代码审计_第6张图片
查看响应,得到flag:
暑期练习web15:web login(i春秋)百度杯十月 代码审计_第7张图片
总结:这个题最重要的应该还是中间代码审计的部分,一开始我还在想着传i春秋什么的。。。现在代码审计的时候也有了点心得:只看最关键的部分,其他的不懂也不要慌
今天的是龙骑的csm,没钱买啊。。。。
暑期练习web15:web login(i春秋)百度杯十月 代码审计_第8张图片
暑期练习web15:web login(i春秋)百度杯十月 代码审计_第9张图片

暑期练习web15:web login(i春秋)百度杯十月 代码审计_第10张图片

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