0x01 php弱类型
什么是php弱类型
php变量类型
php类型装换
题型1 scrcmp
|
|
题型2 字符串比较(原值不相等,md5值相等)
|
|
Solution1
什么是科学计数法
‘0e123456789’ == ‘0e987654321’ == 0
md5值的取值范围
‘0123456789abcdef’
[0e+数字]的md5
md5(‘QNKCDZO’) ==
‘0e830400451993494058024219903391’
md5(‘240610708’) ==
‘0e462097431906509019562988736854’
Solution2
PHP md5函数特性
md5([1,2,3]) == md5([4,5,6]) == NULL
数组Trick,无需再利用弱类型比较特性
总结的一些常用的比较
1234567891011121314151617 php > var_dump(md5('240610708') == md5('QNKCDZO'));bool(true)php > var_dump(md5('240610708'), md5('QNKCDZO'));string(32) "0e462097431906509019562988736854"string(32) "0e830400451993494058024219903391"php > var_dump(md5('240610708') === md5('QNKCDZO'));bool(false)php > var_dump("0e462097431906509019562988736854" == "0e830400451993494058024219903391");bool(true)php > var_dump("0e462097431906509019562988736854" === "0e830400451993494058024219903391");bool(false)php > var_dump(md5('240610708') === md5('QNKCDZO'));bool(false)php > var_dump(md5('240610708') == md5('QNKCDZO'));bool(true)php > var_dump(md5('240610708') === md5('QNKCDZO'));bool(false)
题型3 登录逻辑常见考点
|
|
运行流程:
NULL的巧妙构造
12345 用户不存在=>$r['pass']<=>NULL密码是数组=>md5($_POST['pass']) ⇔ NULL$r['pass'] === md5($_POST['pass'])NULL === NULL 成立成功登录!
0x02 发现源码(题面信息越少,越可能需要找到源码)
发现套路
123 题目只给出一个登录框页面只有一两行字页面中包含Powered XXX
关于misc查看通讯地址Trick
直接丢到 https://www.virustotal.com/ 在 Behavioural information 可以看到通讯地址
源码发掘考点一览
0x03 CTF比赛中的那些WAF与绕过
题型4 字符串替换WAF
|
|
一大堆非常严格的过滤,最后出现一处字符串替换空型WAF
方法:
题型5 字符替换空型WAF加强版
|
|
通过循环替换转移注意力,实际简单的大小写变换即可绕过
题型6 特殊字符(串)拦截型WAF
|
|
####那些常见的SQL Trick
未完待续!!!!!!!!