CCTF重邮(绿盟)杯_web150
来源:互联网 发布:超过淘宝承诺时间发货 编辑:程序博客网 时间:2024/04/28 08:31
CCTF重邮(绿盟)杯_web150
本题是一个代码审计题,主要考察点还是PHP的弱验证。查看源代码可以在底部发现登陆规则。
if(isset($_POST['login'])) { if(isset($_POST['user'])) { if(@strcmp($_POST['user'],$USER))//USER是被隐藏的复杂用户名 { die('user错误!'); } } if (isset($_POST['name']) && isset($_POST['password'])) { if ($_POST['name'] == $_POST['password'] ) { die('账号密码不能一致!'); } if (md5($_POST['name']) === md5($_POST['password'])) { if(is_numeric($_POST['id'])&&$_POST['id']!=='72' && !preg_match('/\s/', $_POST['id'])) { if($_POST['id']==72) die("flag{xxxxxxxxxxxxx}"); else die("ID错误2!"); } else { die("ID错误1!"); } } else die('账号密码错误!'); } }
0X00
第一个点的user提示是一个复杂用户名,然后它是用@strcmp($_POST['user'],$USER)
判断的,所以构造时要构造user[]
(字串),用burp暴力破解常见的用户名,得到user[]=admin
。
0X01
而下面要验证的是一个name
不等于password
,同时name
和password
的md5值要一致。
这里就要说一个PHP比较坑的地方了,当你的字符串的MD5值是以0e开头的,PHP会默认他是int型的0,而0=0就是true。
于是可以构造:name[]=s155964671a&password[]=s214587387a
0X01
最后一个地方要过的是,在之前作为字符串儿判断时ID不等于’72’
。然后在下面判断数字形式的时候要等于72
,这里考察的是一个PSP的弱验证。只需要构造id=72.00
最后payload及flag如图:
阅读全文
0 0
- CCTF重邮(绿盟)杯_web150
- CCTF重邮(绿盟)杯_数据包分析
- CCTF重邮(绿盟)杯_部分解密题WriteUp
- CCTF 2016 WriteUp(部分)
- 绿盟杯NSCTF(CCTF)2017 pwn writeup
- 绿盟笔试题(附答案)
- 绿盟月刊
- 绿盟科技
- 绿盟一面
- 绿盟转正考试
- 绿盟实习
- 绿盟面试
- 绿盟科技面试
- 绿盟一面
- 绿盟前端面试
- apache漏洞修复(绿盟科技漏洞)
- 绿盟堡垒机云服务(vSAS-H)
- apache漏洞修复(绿盟科技漏洞)
- mysql explain说明
- hibernate框架
- 知乎问题"房间里100个人,每人1000元,他们玩一个游戏,每轮游戏中,每个人拿出1元,随机给另一个人,最后他们的财富分布是怎样的"实践解答
- 尽量少访问dom和尽量减少标记;
- Android中后台服务与通知的协作工作
- CCTF重邮(绿盟)杯_web150
- mysql(二)常用的命令及语法规范
- 欢迎使用CSDN-markdown编辑器
- 抽象类的继承与接口的实现
- ip与子网掩码
- hibernate和mybatis中关于sessionfactory、session的线程安全问题详解
- hdu1278 (模拟题)
- 一步步搭建ssh框架
- Linux 常用命令