如果不出错的话,每篇通关攻略应该是5条题目~
下面继续开始表演~
6.这关需要RMB购买哦
首先是个登录框。。。难道是注入?
到这里我已经觉得不太可能。。应该是一条逻辑漏洞支付的题目。。因此直接去看了源码。。过滤的死死的~
所以直接去数据库看了下账号密码。。(起码得给个测试账号密码吧。。)
账号为tom,密码为123456
这里看了下源码,有个利用$url参数来进行页面跳转,但是首先数据库会判断用户名和密码,就算跳转成功,也会倒在这条判断账号密码上。。不知道是否还有其他办法绕过登录?
可以看到这里显示的账号、密码、余额,估计是要抓包修改余额,然后利用这种逻辑漏洞来增加余额~
我实在被这条逗笑了。。
这里原先bill1=10,大意就是这本书10块,这里我修改成-10,但是提交过去,得到了一个“不要白拿书”的alert语句。。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
$count=$bill1*$num1+$bill2*$num2;//总价
$uid=$result_row[0];
$db_uname=$result_row[1];
$db_pwd=$result_row[2];
$db_bill=$result_row[3];
}
if($count<0){
echo “<script type=‘text/javascript’>alert(‘不要尝试白拿书!’);location.href=‘index.php’</script>“;
}else if($count>$db_bill){
echo “<script type=‘text/javascript’>alert(‘您的余额不足,请充值或者购买少量书籍!’);location.href=‘index.php’</script>“;
}else{
$db_bill2=$db_bill–$count;//购买后的金额
$updateSql = “update user set bill = ‘”.$db_bill2.“‘ where uid='”.$uid.“‘”;
$result = mysql_query($updateSql);
if($result>0){
echo “<script type=‘text/javascript’>alert(‘您购买的”.$num1.” 本书籍1和”.$num2.”本书籍2购买成功,您原来的余额为”.$db_bill.”元,现在的余额为”.$db_bill2.”元!’);location.href=‘index.php’</script>“;
}
|
还是来好好看源码吧。。
这个count<0的时候就会报错,而这个count其实就是我们的付款金额,当我们的付款金额小于0时就会alert,也就是说这里不能利用逻辑漏洞~
但是这个update语句完全没过滤,,感觉会在这里出问题!
但是这里的参数都经过了mysql_real_escape_string()的洗礼,注入的确不存在。。有点没有头绪了。。不过这里利用这个uid倒是存在越权漏洞。。虽然很鸡肋!
如果有漏洞的话,那就是利用count=0来完成购买
这里count=0,但是我们却买了三本书,不知道题目是不是想要这个效果。。
7.越权
跟第六题一样的界面,但是进去之后却是修改密码!
难道是利用更改密码来修改其他成员的密码?
点进去可以看到url中最后为?name=tom,因为看过数据库,我知道还存在一个账号admin,但是密码巨复杂。。利用抓包来更改试试~
这里提示修改成功,但是这里令我心惊胆战的是在抓包时,原密码也要输入,我当时在想难道不会对输入的用户名和原密码进行验证吧,,还好没有。。
成功登陆进来~
但是本着求知,我还是去看了下源码是怎么进行更改的
1
2
3
4
5
6
7
8
9
10
11
12
|
#$query = “select uid from user where uname='”.$uname.”‘ and pwd='”.$pwd1.”‘”;//构建查询语句
$query = “select uid from user where uname='”.$uname.“‘”;//构建查询语句
if($pwd2==$pwd3){
//更新记录
$updateSql = “update user set pwd = ‘”.$pwd2.“‘ where uid='”.$uid.“‘”;
$result = mysql_query($updateSql);
if($result>0){
echo “<script type=‘text/javascript’>alert(‘更改密码成功,请重新登录!’);location.href=‘index.html’</script>“;
}
}
|
这里的$query被注释。。。真的是。。。因为被注释了,所以这里只会判断用户名是否存在,而不会去判断密码是否正确,因此这里不会去验证用户名和原密码是否对应,最后就是修改后输入的两次密码需一致,这个没什么好说的。。
8.CSRF
感觉难度越来越大了。。快到自己的极限了。
一样的界面,但是不一样的味道~
这里估计是利用csrf来更改管理员密码!
这里抓包可以看到有三个参数,后面的password2和password3保持一致即可,username这里改成admin即可,下面使用burp生成csrf的poc
这里如何生成csrf的poc,还是演示一下吧。。
点击上面Engagement tools->Generate CSRF Poc即可~
1
2
3
4
5
6
7
8
9
10
11
|
<html>
<!— CSRF PoC – generated by Burp Suite Professional —>
<body>
<form action=“http://192.168.57.128/pentest/test/4/update_user.php” method=“POST”>
<input type=“hidden” name=“username” value=“tom” />
<input type=“hidden” name=“password2” value=“adog” />
<input type=“hidden” name=“password3” value=“adog” />
<input type=“submit” value=“Submit request” />
</form>
</body>
</html>
|
然后将这串代码拷贝进自己生成的一个test.html
管理员打开后我们给他发送的test.html后,点击按钮,即可让他中招(修改密码)
9.URL跳转
进去之后依然是登录系统->修改密码,既然题目是说存在url跳转,那么就来找找哪儿存在跳转漏洞
其实在上几题我就已经发现了,,在网页源码是如何完成跳转的
1
|
<!—<a href=“index.php?url=#”>I</a>—>
|
这里我们来尝试给index.php后面加上参数,就比如说修改密码的页面为change.php
的确可以利用url参数来进行跳转
不知道你们看到报错语句没有,,然后我又回去看了下源码
1
2
3
|
<?php
$uname=$_REQUEST[‘name’];
?>
|
原来是要修改的用户名没有定义,所以导致的报错。。
那么我们在一开始的url跳转时就给它加上?name=tom
这里也能修改密码,利用的就是url直接跳转,绕过了用户验证~
10.文件下载
打开后竟然是404?吓得我赶紧去服务器上看了下目录。。
的确又是url目录出现了问题。。。
但是这个index.php有毒
不管它了。。这道题既然考的是文件下载,还是来看download.php吧
我猜又是在url上做文章,直接看源码!
标题是帮管理员找回mysql密码,那么看到这里,基本就是利用文件下载漏洞来下载数据库文件了!
这里同样利用配置问题,来遍历当前目录下的所有文件
并没有db、sql文件等出现,或许是同级目录呢。。一般情况下配置文件会在另一个文件夹下
这里已经知道了config.php的相对路径,下面来看看这个download.php能否实现下载文件的功能~
这里出现不能读取是因为路径的问题,那么我们利用../来进行路径跳转!
如果非要吐槽下这个平台的话,那就是文件路径严重不对!
这里的phpinfo.php是在WWW目录下,这里测试了下可行性,的确能够下载文件~
下面来构造config.php的下载路径
1
|
http://192.168.57.128/pentest/test/6/1/download.php?fname=../../../pentest/test/6/1/db/config.php
|
可以看到开头就是mysql的密码~
作者:Lz1y 基友szrzvdny的朋友博客被入侵了,由于是虚拟空间,所以只有apache访问日志以供分析 这里已经做去敏操作了,以供学习: 链接: https://pan.baidu.com/s/1JUII7_ZOK1SIxnWxlzu0Hw 密码: by…
请登录后发表评论
注册