Pwnhub之目瞪狗呆

注入很明显,更多的是考技巧。

<?php
require 'conn.php';
$id = $_GET['id'];
if (preg_match("/(sleep|benchmark|outfile|dumpfile|load_file|join)/i", $_GET['id'])) {
    die("you bad bad!");
}
$sql = "select * from article where id='" . intval($id) . "'";
$res = mysql_query($sql);
if (!$res) {
    die("404 not found!");
}
$row = mysql_fetch_array($res, MYSQL_ASSOC);
mysql_query("update view set view_times=view_times+1 where id = '" . $id . " '");
?>
<body>
    <div>
        <div class="container">
            <div class="row">
                <div class="col-md-12">
                    <h1><?=$row['title']?></h1>
                    <article><?=$row['content']?></article>
                </div>
            </div>
        </div>
    </div>
</body>

sleep?

常见延时函数被禁用了,但是还是可以通过大量运算来导致mysql运行缓慢。

1、重查询,笛卡尔积

SELECT count(*) FROM information_schema.columns A, information_schema.columns B, information_schema.columns C

2、高计算量
看到pwnhub其他师傅的解题,膜一发。

concat(rpad(1,999999,'a'),rpad(1,999999,'a'))

get_lock

膜出题人do9gy师傅,学习姿势。

基本语法:

select get_lock(key, timeout) from dual;
select release_lock(key) from dual;

(1)get_lock会按照key来加锁,别的客户端再以同样的key加锁时就加不了了,处于等待状态。
(2)当调用release_lock来释放上面加的锁或客户端断线了,上面的锁才会释放,其它的客户端才能进来。

posted @ 2018-04-02 20:42 l3m0n 阅读(...) 评论(...)  编辑 收藏