解释下sqlmap为什么能跑出来 SQL注入点检测-文本内容相似度 里的php代码。
这个问题有一两个反馈了,我没怎么在意,就随便解释了下,其实之前的那篇本意是分享下”内容相似度检测”,sql只是举例子,希望同行们可以举一反三…
但是刚刚朋友给我发了张图,看着作者挺认真正经的,那我也认真正经的回复下,
首先sqlmap不拉胯,但确实sqlmap是检测不出来一些盲注的,可能它的相似度没有做太好,过于依赖payload,但sqlmap还是业界SQL注入检测和利用的No.1地位, 不接受任何反驳,我时常会用,跑东西方便… 而我这个只是发现注入点,发现sql漏洞方便而已,常规检测,就像我昨天发的示例视频一样,能检测那些类型的注入。
但为什么大家sqlmap都跑出来了…可能我之前代码粘错了,这才是个盲注该有的样子,比如某云,他每个请求包响应,json响应包除过稍微几个文字内容外都有对应的随机ID,但报错时就一个true false加随机ID,还有的场景包括注册时昵称检测处、邮箱名、手机名检测校对处,注册时。
可能文件太多,做那个东西的时间太久,我给粘贴复制时可能忘记了 粘错了,我的锅我背,修道之人犯错在所难免,当时专门为了验证sqlmap,我是把sleep是过滤掉的….
示例代码,欢迎挑战,
if($_GET['method']=='sql_inj_get_method'){
//where sql注入
$id = $_GET[ 'id' ];
// Check database
$id=str_replace('sleep','',strtolower($id));
//echo $id.'</br>';
$query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
$result = $con->query($query) or die( '1 success <pre>database error... '.$rand_strs.'</pre>' );
// Get results
while( $row = mysqli_fetch_assoc( $result ) ) {
//盲注
echo '1 success ';
/*
// Get values
$first = $row["first_name"];
$last = $row["last_name"];
echo '<pre>ID:'. $id.'<br />';
echo '<pre>first_name:'. $first.'<br />';
echo '<pre>last_name:'. $last.'<br />';
*/
}
}
反正我的工具基本没啥毛病,如图:
特地准备了两个版本的sqlmap 并且删除sqlmap缓存后,分别是windows和Ubuntu两个版本。
最终结果证明sqlmap并不能检测到…
还有我为什么造轮子,sqlmap的payload太多,对我来说多余的请求包就也太多,尽量要用最少的重放次数干大事,如Sqlmap是SQL检测和普通的XSS反射检测,而我的每次重放的请求包,都是有自己的考量,配合这些基础检测。
顺便感谢下测试sqlmap的大佬,让我认真解释下, 不然我今天还真不知道发啥公众号文章,要凑够三篇的…. 哈哈哈 刚好解释下sqlmap能跑出来是怎么回事 哈哈哈,还有希望,各位看官多关注下重点,内容相似度,这东西我做的这么基础简陋,都可以整sql,相信用在其他地方,更大有可为。
希望大家都能帅一点,开放、分享、包容,共同推进业界的技术进步,鄙视无价值白嫖,更鄙视商业化收费。
欢迎扫描器技术交流 wechat: guimaizi
我这专门有个聊扫描器的群,有开发能力的小伙伴,可以私聊找我拉群,求机器学习/深度学习/强化学习相关大神带带弟弟,想学。
啥都不懂,也不对技术感兴趣的,请勿打扰,如图:
原文始发于微信公众号(鬼麦子):解释下sqlmap为什么能跑出来