当前位置: 首页 > news >正文

二手网站排名河北项目网

二手网站排名,河北项目网,婺城区建设局网站,PHP MySQL 网站开发实例打开题目 输入字符的时候啥也不回显。只有输入数字的时候页面有回显 但是当我们输入union#xff0c;from#xff0c;sleep#xff0c;where#xff0c;order等#xff0c;页面回显nonono#xff0c;很明显过滤了这些关键词 最开始我的思路是打算尝试双写绕过 1;ununion…打开题目 输入字符的时候啥也不回显。只有输入数字的时候页面有回显 但是当我们输入unionfromsleepwhereorder等页面回显nonono很明显过滤了这些关键词 最开始我的思路是打算尝试双写绕过 1;ununionion  select 1,2,3 发现依旧被过滤了。 那我们试试堆叠注入 1;show databases; 发现页面有6个数据库 1;show tables; 有一个名为Flag的表 那我们试试能不能直接查看Flag的表结构 1;desc Flag; 同样这里被过滤了flag字段所以我们不能直接查询到Flag表下的字段 上面的测试我们知道from和order都被过滤了 本来想试试句柄handler命令查询的结果一试handler也被过滤了。 那就用不了堆叠注入也用不了联合查询。 解法一 看了大佬的wp后知道 既然输入字符无回显输入数字才有回显。 他的后端既然能做到数字回显字母不回显说明有一个 或 结构而且不直接回显flag但作为一道题目from一定是from flag 所以大佬猜测的后端为 select $_POST[query] || flag from Flag 结合我们刚刚上面做的堆叠注入的查询知道确实有个名为Flag的表 所以上面的猜测成立不会是from别的地方。 我们对上面的代码简单审计一下$query 是通过 POST 请求获取的用户输入所以后端通过获取用户输入的数据这里的“或”符号“ | | ”的意思是作为逻辑或用于短路逻辑如果前者的语句为真则整个语句为真不理会后面的语句是真还是假直接输出结果。 所以我们这直接利用短路语法 payload *,1 这里的原理是 sqlselect.post[query].||flag from Flag; 如果$post[query]的数据为*,1sql语句就变成了select *,1||flag from Flag 就是select *,1 from Flag这样就直接查询出了Flag表中的所有内容 输入  *,1   这里会增加一个临时列他的列名为1然后那一列的值都为1。 当我们只关心数据表有多少记录行而不需要知道具体的字段值时类似“select 1 from table_Name”是一个很不错的SQL语句写法它通常用于子查询。这样可以减少系统开销提高运行效率因为这样子写的SQL语句数据库引擎就不会去检索数据表里一条条具体的记录和每条记录里一个个具体的字段值并将它们放到内存里而是根据查询到有多少行存在就输出多少个“1”每个“1”代表有1行记录同时选用数字1还因为它所占用的内存空间最小当然用数字0的效果也一样。在不需要知道具体的记录值是什么的情况下这种写法无疑更加可取。   得到flag 解法二 payload 1;set sql_modePIPES_AS_CONCAT;select 1 这里看英文就知道这里把管道符||当做了连接符号 我们原先猜测的后端代码为 select $_POST[query] || flag from Flag 变成了 select $_POST[query] and flag from Flag 在 SQL 注入攻击中concat 是一个用于连接字符串的 SQL 函数。它接受两个或多个字符串作为参数并返回这些字符串连接在一起的结果。 知识点 “ || ”符号的三种用法 1作为符号命令执行上下文在一些特殊的上下文中特别是在 命令执行或 shell 脚本 中 ||  可以表示一个截断符号只有在前一个命令失败返回非零状态码时才执行下一个命令。 例如command1 || command2 如果 command1 失败返回非零状态码则执行 command2。这种用法可以用于处理错误情况或依赖于前一个命令的成功执行。 2作为逻辑或|| 表示逻辑或运算符即只要两边的表达式之一为真整个条件就为真。 例如 if condition1 or condition2:     # 如果 condition1 或 condition2 为真则执行这里的代码 只要 condition1 或者 condition2 中有一个为真整个条件就为真而不需要等待另一个条件的计算结果。 3用于短路逻辑在某些情况下|| 可能被用于实现短路逻辑这意味着如果第一个表达式为真就不再计算第二个表达式。如果第一个表达式为假那么才会计算第二个表达式。这种行为利用了逻辑或的性质只要有一个条件为真整个表达式就为真。 例如var result expression1 || expression2; 在这里如果 expression1 为真expression2 将不会被计算 短路语法 举例说明 “||”运算符检查第一个表达式是否返回“true”如果是“true”则结果必为“true”不再检查其他内容。“a/0”是个明显的错误但短路运算“||”先执行“ab”判断返回“true”遂造成短路也就不进行“a/0”操作了程序会打出Thats in my control.。这个时候交换一下“||”左右两边的表达式程序立即抛出异常“java.lang.ArithmeticException: / by zero”。 class Logic{public ststic void main(String[] args){int a1;int b1;if(ab || ba/0){System.out.println(Thats in my control.);}else{System.out.println(OhThats Impossible!!!);}} } 参考文章java中“”和“||”短路详解_java中||-CSDN博客 在计算机逻辑语言中1代表逻辑真0代表逻辑假 select 1 from table_Name的原理 在我自己本地的数据库下有个users表表的结构如下 我们用select 1 from users; 这个语句在这里的作用就是查询users表下有多少行数据有多少行就输出多少行的1而select 1 from就是建立一个临时列这个列的所有初始值都设为1。而为什么选用数字1呢因为数字1所占的内存最小。用其他数字效果也是一样的。 而使用select *,1 from users; 也就是本题的payload效果如下 select *,1 from users; 这个语句显示了users表下的所有列以及我们的临时列1 sql_mode sql_mode 是一个MySQL系统变量用于设置数据库操作的不同方面 文章参考wp为[SUCTF 2019]EasySQL 1 Writeup(超级详细)-CSDN博客
http://www.hkea.cn/news/14444243/

相关文章:

  • 腾讯云网站免费建设中山 照明 骏域网站建设
  • 制作静态网站制作做房地产用什么网站好
  • 企业网站建设费用的预算电脑配件经营网站的建设
  • 中国空间站和国际空间站对比山东省建设协会网站
  • 盐城网站开发市场公司官网域名怎么注册
  • 制作微信的网站衡水网站建设联系电话
  • 如何创建网站教程视频郑州优化网站
  • jsp源码做网站wap网站如何制作
  • 烟台百度网站排名永州网站制作
  • .net网站项目有哪些购物网站开发语言
  • 我自己做的网站一直没有效果怎么办域名过期了被别人拿去做违法
  • 在电脑上怎么做网站php网站开发是做什么的
  • 12306网站做的好丑北京网站设计公司哪家公司好
  • 手机怎么做自己的网站食品网站建设书
  • 南宁网站建设策划外包wordpress 百度广告
  • 免费下载网站模版php项目开发案例源码
  • 深圳网站关键词优化排名西安企业建站公司
  • 有没有女的做任务的网站app扁平化设计网站
  • 广西省建设厅网站网站被重定向跳转
  • 海珠区做网站的公司上海网站建设网站游戏
  • 网上怎么自己做网站360doc 网站怎么做
  • 物流企业网站淄博公司做网站
  • 如何做一款服装网站ftp网站 免费
  • 旅游哪个网站最好静态网站开发预期效果
  • 网站搬家后出错网站建设从哪入手
  • 芷江建设工程招投标网站公司策划方案怎么做
  • 建设一个简单的网站精美旅游网站案例
  • 公司名字大全霸气南宁网站优化推广方案
  • 网站建设大数据搜索引擎调词平台价格
  • 有哪些网站是用php做的莱芜网页定制