3D打印|php代码审计-sql注入进阶篇( 二 )
$dl=\"SELECT * FROM xs WHERE username='$username' and password='$password'\"; //登录界面后台处理$ck=mysqli_query($db$dl);$row = mysqli\\_fetch\\_array($ck);if($_POST\\['login'\\
){if($row) {echo\"登录成功\";
else{echo\"登录失败\";
function dl($gl){$gl=str_replace(array(\"union\"\"UNION\")\"\"\"$gl\");$gl=str_replace(array(\"select\"\"SELECT\")\"\"\"$gl\");$gl=str_replace(array(\"database\"\"DATABASE\")\"\"\"$gl\");$gl=str_replace(array(\"sleep\"\"SLEEP\")\"\"\"$gl\");$gl=str_replace(array(\"if\"\"IF\")\"\"\"$gl\");$gl=str_replace(\"--\"\"\"\"$gl\");$gl=str_replace(\"order\"\"\"\"$gl\");return $gl;
?>
阅读一遍代码发现在上一段的基础上面添加了一个preg_match函数 , 这个函数过滤了or and xor not关键字 , 需要注意的是preg_match会大小写都过滤 , 继续往下读回显位改成了成功或者失败所以我们只能采用盲注或者延时注入 。
逻辑运算符绕过先尝试大小写绕过 , 果然是失败的 。
使用逻辑运算符尝试
and = &&
or = ||
xor = | # 异或
not = !
使用&&代替and构造盲注语句1’ && length(DATAbase())=3 # 因为关键字过滤函数还在所以还同时需要大小写绕过 。
注入成功url编码绕过在平常使用url提交数据时 , web容器在接到url后会自动进行一次url编码解析 , 但是由于业务问题有些网站在web容器自动解析之后 , 通过编写程序对解析的参数进行再次url编码解析 , 就会出大问题 。
源代码分析<?phprequire 'db.php';
header('Content-type:text/html;charset=utf8');
$id1=$_GET\\['id'\\
;
$gl=\"/and|or|not|xor|length|union|select|database|if|sleep|substr/i\";if(preg_match($gl$id1)){echo\"<script>alert('存在危险字符')</script>\";
else{
$id=urldecode($id1);
$dl=\"SELECT * FROM xs WHERE id='$id'\";
$result=mysqli_query($db$dl);
$row = mysqli\\_fetch\\_assoc($result);if($_GET\\['id'\\
) {if ($row) {echo \"登录成功:\" . $row\\['username'\\
;
?>
上来还是先看看代码 , 把客户端传入的get参数赋值进了
- 打印机|网购的无线打印机,竟能自动打印他人文件?
- PHP|如何降低用户关注的非必要页面的权重传递?
- 华为能有机会在家用办公打印机领域抢占一席之地
- 电子商务|3D打印机有多强大?科学家曾利用3D打印技术打印出火箭喷射器
- PHP|PHP到底适不适合做大型网站?
- 凯迪拉克|全新凯迪拉克Celestiq内饰设计曝光,零配件采用3D打印技术打造!
- 开源软件|嵌入式开发:技巧和窍门——引导加载程序跳转到应用程序代码
- Netflix|EXCEL中打印技巧,职场新手必备
- 3D打印|小程序商城和公众号商城有什么区别?
- 卫报|坎爷前任新造型又省布料!和金卡戴珊比瘦?穿3D打印衣秀蚂蚁腰
