题目描述
某应用程序被攻击,请分析日志后作答:
8.1 黑客在注入过程中采用的注入手法叫_____________。(格式为4个汉字,例如“拼搏努力”)
wp:
取出一条日志
172.17.0.1 - - [01/Sep/2021:01:37:25 +0000] "GET /index.php?id=1%20and%20if(substr(database(),1,1)%20=%20'%C2%80',1,(select%20table_name%20from%20information_schema.tables)) HTTP/1.1" 200 422 "-" "python-requests/2.26.0"
url解码172.17.0.1 - - [01/Sep/2021:01:37:25 0000] "GET /index.php?id=1 and if(substr(database(),1,1) = '',1,(select table_name from information_schema.tables)) HTTP/1.1" 200 422 "-" "python-requests/2.26.0"
if语句就是布尔判断
flag:
布尔盲注
8.2 黑客在注入过程中,最终获取flag的数据库名、表名和字段名是_____________。(格式为“数据库名#表名#字段名”,例如database#table#column)
wp:
采用字符定位法就可以找到最终结果,因为sql盲注的原理就是一个一个字符猜测,猜对了就猜下一个字符,
比如
%C2%80是第一个,猜对了进行下一次 %C2%80, %C2%80之前的就是正确结果,因此sq就是猜出的正确结果
1行 | 161行 | 数据库名 |
162行 | 353行 | sqli数据库的表名 |
354行 | 545行 | sqli数据库flag表的字段名 |
546行 | 2764行 | sqli数据flag表flag字段内容 |
按照之前的方法就可以收集出字符串
库名 sqli
表名 flag
字段名 flag
内容 flag{deddcd67-bcfd-487e-b940-1217e668c7db}
有一种取巧方法,先将日志信息全部url编码后,直接从后往前翻
执行了一条sql语句,查询的是sqli数据库flag表的flag字段
select flag from sqli.flag
flag:
sqli#flag#flag
8.3 黑客最后获取到的flag字符串为_____________。
wp:
上题已经解出
flag:
flag{deddcd67-bcfd-487e-b940-1217e668c7db}