less-1
首先呢,这里有一个extract函数接收了\$_GET,百度一下 得知这个函数会把数组中的键名作为变量名,键值作为变量值,来生成变量 审题得知$flag变量在extract之上,所以可以重新对flag赋值,对flag赋值一个不存在的文件名,这样file_get_contents($flag)只能获取到空 trim去除空格,这样我们只需要把shiyan设置成空就可以打印flag01.php的内容了 构造url: http://172.17.135.65/less-1.php?shiyan=&flag=bucunzai
extract()
- extract() 函数从数组中将变量导入到当前的符号表。
- 该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。
- 该函数返回成功设置的变量数目。
less-2
have a fun!! hints:less-2 de zip 直接改成http://172.17.135.65/less-2.zip down下来源码 首先根据isset($_GET['number'],要以get方式提交一个名字叫number的变量. 为了绕过is_numeric函数,应该使用%00截断,为什么要用%00阶段呢?因为后面的要求是这个字符串必须要能转换成他自己的整型变量 绕过函数原理为该函数只会读取字符到%00停止,如果在%00后面加东西,他是无法检测出来的,只会依据%00之前的字符判断类型 而后面的读取会忽略0x00,直接读取完字符串,这就是绕过原理 接下来,
1 | $value1 = intval($req["number"]); |
intval函数会忽略/f,但是strval函数并不会,所以,在回文数检测时,那个传入的文本头是,返回的是一个假,所以我们得到了flag 构造url:http://172.17.135.65/less-2.php?number=%00%0c22less-3
首先要求设置以get方式设置password 第二个if要求必须为数字和字母,^[a-zA-Z0-9]+$,确保了科学计数法的可行性 由于strlen($_GET['password']) < 8 && $_GET['password'] > 9999999,所以不能构造数字,所以构造1E7就可以绕过限制了, 接下来要strpos ($_GET['password'], '*-*') !== FALSE 说明password字符串中应该有-字符,但是前面有限制是password必须为数字,所提用%00截断 构造url:http://172.17.135.65/less-3.php?password=1E7%f*-* %00截断原理 ##### ereg() 1. ereg()函数用指定的模式搜索一个字符串中指定的字符串,如果匹配成功返回true,否则,则返回false。搜索字母的字符是大小写敏感的。 2. ereg函数存在NULL截断漏洞,导致了正则过滤被绕过,所以可以使用%00截断正则匹配.
less-4
传入一个非字符的变量a即可,例如object,数组 构造url:http://172.17.135.65/less-4.php?a[] strcmp漏洞原理 ##### strcmp() 1. strcmp() 函数比较两个字符串,且大小写敏感. 2. 这个strcmp函数用于比较字符串是否相等,可知,传入的期望类型是字符串类型的数据,但是如果我们传入非字符串类型的数据的时候,这个函数将会有怎么样的行为呢?实际上,当这个函数接受到了不符合的类型,这个函数将发生错误,但是在5.3之前的php中,显示了报错的警告信息后,将return 0 !!!! 也就是虽然报了错,但却判定其相等了。
less-5
如果把这两个字段构造为数组,如:?name[]=a&password[]=b,这样在第一处判断时两数组确实是不同的,但在第二处判断时由于sha1()函数无法处理数组类型,将报错并返回false,if 条件成立,获得flag。 构造url:http://172.17.135.65/less-5.php?name[]=xiaoming&password[]=123456 md5/sha1漏洞原理
less-6
原理同上 构造url:http://172.17.135.65/less-6.php?username[]=1&password[]=2
less-7
首先检测了是否使用POST方法提交表单,一定使用POST方法提交表单,否则没戏 ##### 正则规则:
1 | [:graph:] : 除空格,TAB外的所有字符 |
POST数据构造:password=42.000e%2b000000000
less-8
POST参数 user='and 0=1 union select 'e10adc3949ba59abbe56e057f20f883e' #&pass=123456
less-9
一大堆rand,不是真的算 把SESSION和passwoed修改掉就行了
less-10
首先根据题意写代码
1 |
|

