【代码审计】PHP代码审计之CTF系列(1)

优采云 发布时间: 2022-06-20 01:27

  【代码审计】PHP代码审计之CTF系列(1)

  声明:Tide安全团队原创文章,转载请声明出处!文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!

  采用github yaofeifly师傅的PHP练习,链接:。每个内容均采用docker。部署过程:进入对应的docker_env,使用

  docker-compose builddocker-compose up -d

  进入对应docker进程,查看地址访问即可。

  challenge 1

  访问地址,发现源码

  1wMDEyY2U2YTY0M2NgMTEyZDQyMjAzNWczYjZgMWI4NTt3YWxmY=

  即可得到

  

  补充:

  bin2hex() 函数把 ASCII 字符的字符串转换为十六进制值。<br />strrev() 函数反转字符串。<br />hex2bin() 函数把十六进制值的字符串转换为 ASCII 字符。

  challenge 2

  题目内容:

  得出结果:

  

  补充:

  1、当一个字符串被当作一个数值来取值,其结果和类型如下:如果该字符串没有包含’.',’e',’E'并且其数值值在整形的范围之内,该字符串被当作int来取值。其他所有情况下都被作为float来取值,该字符串的开始部分决定了它的值,如果该字符串以合法的数值开始,则使用该数值,否则其值为0。

  2、在进行比较运算时,如果遇到了0e这类字符串,PHP会将它解析为科学计数法。(也就是说只靠最前面的进行判断)

  3、在进行比较运算时,如果遇到了0x这类字符串,PHP会将它解析为十六进制。

  challenge 3

  题目内容:

  

  访问后发现没有什么内容,查看一下源码。

  

  发现存在challenge3.txt文件,尝试访问。

  发现源码

  <br />

  stripos()

  stripos()函数:查找字符串在另一字符串中第一次出现的位置(不区分大小写)

  strpos() - 查找字符串在另一字符串中第一次出现的位置(区分大小写)

  strrpos() - 查找字符串在另一字符串中最后一次出现的位置(区分大小写)

  stripos()函数返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。字符串位置从 0 开始,不是从 1 开始。

  file_get_contents()

  file_get_contents()函数:把整个文件读入一个字符串中,加上@是屏蔽对应的错误

  PHP中fopen,file_get_contents,curl函数的区别:

  1、fopen/file_get_contents 每次请求都会重新做DNS查询,并不对 DNS信息进行缓存。但是CURL会自动对DNS信息进行缓存。对同一域名下的网页或者图片的请求只需要一次DNS查询。这大大减少了DNS查询的次数。所以CURL的性能比fopen /file_get_contents 好很多。

  2、fopen /file_get_contents 在请求HTTP时,使用的是http_fopen_wrapper,不会keeplive。而curl却可以。这样在多次请求多个链接时,curl效率会好一些。

  3、fopen / file_get_contents 函数会受到php.ini文件中allow_url_open选项配置的影响。如果该配置关闭了,则该函数也就失效了。而curl不受该配置的影响。

  4、curl 可以模拟多种请求,例如:POST数据,表单提交等,用户可以按照自己的需求来定制请求。而fopen / file_get_contents只能使用get方式获取数据。

  eregi()

  eregi()函数:在一个字符串中搜索指定的模式的字符串,搜索不区分大小写。eregi()可以特别有用的检查有效字符串,如密码。

  题目

  观察完代码后发现为php弱类型绕过。

  首先a,进行POST传递。

  当data可以通过php://input来接受post数据。

  $id传一个字符进去,会被转化为0。

  对于b的第一个字符与'111'拼接,和'1114'进行对比)和首字符不为4。

  可以设置$b为111111,这样,substr()会发生截断,在匹配时进行eregi('111','1114')满足,同时不会对strlen()造成影响。

  构造payload:

  ?id=a&a=php://input&b=1111111112 is a nice lab!

  challenge4

  打开后发现源码

<p>

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线